gpt4 book ai didi

ios - 如何在 Cell 的 UIImageView 上添加 mask - Swift

转载 作者:行者123 更新时间:2023-11-28 08:58:54 25 4
gpt4 key购买 nike

我有一个 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)
}
}

最佳答案

每次单元格出列时,您都在向背景图像添加新的子层。通过这种方式,当你滚动时它会变得更暗(当你将你的单元格出列时)。我认为如果它有一个 .xib 文件,您可以在 awakeFromNib 方法中添加到您的 PlacesTableViewCell 类。

与此同时,您的图像框架应该是单元格的一半。在您的 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)
}
}
}

我还没有尝试过这段代码。但您的解决方案可以是这样的。

关于ios - 如何在 Cell 的 UIImageView 上添加 mask - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32385150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com