【问题标题】:UimageView in UITabbleViewCell the frame not rightUITabbleViewCell中的UimageView框架不正确
【发布时间】:2021-07-18 19:01:14
【问题描述】:

我尝试设置 imageView cornerRadius ,但在点击单元格或滚动之前框架不正确 (0.0, 0.0, 158.0, 413.0) (0.0, 0.0, 158.0, 413.0) (0.0, 0.0, 158.0, 413.0) (0.0, 0.0, 96.0, 120.0) (0.0, 0.0, 96.0, 120.0) (0.0, 0.0, 96.0, 120.0) (0.0, 0.0, 96.0, 120.0) (0.0, 0.0, 96.0, 120.0) (0.0, 0.0, 96.0, 120.0) (0.0, 0.0, 96.0, 120.0) 我使用自动布局

before tap cell

after tap cell frame update

我已经把代码放进去

override func layoutSubviews() {
    super.layoutSubviews()
    leftImageView.layer.cornerRadius = leftImageView.layer.frame.width / 2
    leftImageView.layer.borderWidth = 1
    leftImageView.layer.borderColor = UIColor.white.cgColor
    leftImageView.layer.masksToBounds = true
}

【问题讨论】:

  • 我认为问题是 leftImageView.layer.frame.width 当时没有正确的宽度。检查 licecycles 中的帧。
  • 我知道,但似乎 ui 是正确的,框架没有更新,已经检查 viewdidappear 的框架仍然相同(0.0、0.0、158.0、413.0)不正确
  • 在角半径代码之前添加一些延迟,例如 0.1 秒

标签: ios swift uitableview uiimageview


【解决方案1】:

添加这个

override func layoutSubviews() {
       super.layoutSubviews()

       if leftImageView.layer.cornerRadius != leftImageView.layer.frame.width / 2     
       {

           leftImageView.layer.cornerRadius = leftImageView.layer.frame.width / 2
           leftImageView.layer.borderWidth = 1
           leftImageView.layer.borderColor = UIColor.white.cgColor
           leftImageView.layer.masksToBounds = true
           
           setNeedsLayout()
           layoutIfNeeded()
       }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多