如何在单元格中的 UIImageView 上添加遮罩 - Swift
How to add mask on UIImageView in Cell - Swift
我有一个 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)
}
}
每次单元格出队时,您都在向 backgroundImage 添加新的子层。通过这种方式,当你滚动时它会变得更暗(当你将你的单元格出列时)。我想你可以在 awakeFromNib
方法中添加 PlacesTableViewCell
class 如果它有一个 .xib
文件。
与此同时,您的图片框架应该是单元格的一半。使用自动布局在您的 PLacesTableViewCell class.
中修复它的框架(例如,设置宽度和高度限制)
按照@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)
}
}
}
我还没有尝试过这段代码。但你的解决方案可以是这样的。
我有一个 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)
}
}
每次单元格出队时,您都在向 backgroundImage 添加新的子层。通过这种方式,当你滚动时它会变得更暗(当你将你的单元格出列时)。我想你可以在 awakeFromNib
方法中添加 PlacesTableViewCell
class 如果它有一个 .xib
文件。
与此同时,您的图片框架应该是单元格的一半。使用自动布局在您的 PLacesTableViewCell class.
中修复它的框架(例如,设置宽度和高度限制)按照@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)
}
}
}
我还没有尝试过这段代码。但你的解决方案可以是这样的。