gpt4 book ai didi

swift - UITableViewCell 中的 UIImageView 仅在滚动到视野之外后才出现?

转载 作者:行者123 更新时间:2023-11-30 12:56:56 26 4
gpt4 key购买 nike

我向表格 View 单元格添加了一个 UIImageView ,并通过该单元格的 viewWithTag 方法访问它。如果我只是将其添加到单元格的内容 View 中,然后运行应用程序,则 ImageView 就在那里,没有任何问题。但随后我想对该 ImageView 应用几行代码,使其成为圆形 ImageView :

myImageView.layer.cornerRadius = myImageView.layer.frame.size.width / 2
myImageView.clipsToBounds = true
myImageView.layer.borderColor = UIColor.black.cgColor
myImageView.layer.borderWidth = 0.5

看起来不错,但问题是,在我添加这些代码行后,UIImageView 不会出现,直到我向下滚动表格 View ,然后向上滚动以使单元格重新出现。 ——再次出现。所以基本上这意味着 ImageView 仅从第二次显示单元格时加载。如何确保 UIImageView 从第一次需要通过表格 View 显示单元格时就已经可见?

最佳答案

为您的表格 View 单元格创建一个子类并将其设置在 Storyboard中:

class MyTableViewCell: UITableViewCell {

override func layoutSubviews() {
super.layoutSubviews()
// your border and corner radius settings
}
}

问题在于您在单元格生命周期中的错误时间设置了这些属性。通过这种方法,它会正常工作。

更新:另一种解决方案可能是在 Storyboard中使用 IBInspectables 并在属性检查器中设置它们。请参阅下面所附的图片和代码。

enter image description here

extension UIView {

@IBInspectable var cornerRadius: CGFloat {
get {
return layer.cornerRadius
}
set {
layer.cornerRadius = newValue
layer.masksToBounds = newValue > 0
}
}

@IBInspectable var borderWidth: CGFloat {
get {
return layer.borderWidth
}
set {
layer.borderWidth = newValue
}
}

@IBInspectable var borderColor: UIColor {
get {
guard let borderc = layer.borderColor else {
return UIColor()
}
return UIColor(CGColor: borderc)
}
set {
layer.borderColor = newValue.CGColor
}
}
}

关于swift - UITableViewCell 中的 UIImageView 仅在滚动到视野之外后才出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40309310/

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