我有一个tableView,我试图在单元格中的每个图像上添加黑色蒙版,而不是在图像上的整个单元格上。但我有两个问题;
- 它正在从左到中屏蔽半个单元格,每个我滚动它变得更暗。那么请问我的问题在哪里?
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell") as! PlacesTableViewCell
cell.backgroundImage.sd_setImageWithURL(NSURL(string: place.Image), placeholderImage: nil, options: .HighPriority)
}
class PlacesTableViewCell: UITableViewCell {
override func layoutSubviews() {
super.layoutSubviews()
maskArrangement()
}
func maskArrangement(){
var maskLayer = CALayer()
maskLayer.frame = CGRectMake(0, 0, backgroundImage.frame.size.width, backgroundImage.frame.size.height)
maskLayer.backgroundColor = UIColor(white: 0.0, alpha: 0.5).CGColor
//backgroundImage.layer.mask = maskLayer
backgroundImage.layer.addSublayer(maskLayer)
}
}
答案 0 :(得分:0)
每次单元格出列时,您都会在backgroundImage中添加新的子图层。这样滚动时(当你的单元格出列时)它会变暗。我认为如果PlacesTableViewCell
方法有awakeFromNib
文件,您可以添加到.xib
课程。
同时你的图像帧应该是细胞的一半。使用autolayout修复PLacesTableViewCell类中的框架(例如,设置宽度和高度约束)。
以@Shripada的方式:
class PlacesTableViewCell: UITableViewCell {
var maskLayer : CALayer
override func layoutSubviews() {
super.layoutSubviews()
maskArrangement()
}
func maskArrangement(){
if maskLayer == nil {
maskLayer.frame = CGRectMake(0, 0, backgroundImage.frame.size.width, backgroundImage.frame.size.height)
maskLayer.backgroundColor = UIColor(white: 0.0, alpha: 0.5).CGColor
//backgroundImage.layer.mask = maskLayer
backgroundImage.layer.addSublayer(maskLayer)
}
}
}
我还没试过这段代码。但你的解决方案就是这样。