代码之家  ›  专栏  ›  技术社区  ›  A_G

通过更改帧调整UIImageView的大小

  •  1
  • A_G  · 技术社区  · 7 年前

    我在序列图像板中添加了一个带有默认图像的UIImageView。在代码中,我在运行时更新图像并调整帧。

    mainImageView.sd_setImage(with: NSURL(string: urlString) as URL?, completed: {
            (image, error, cacheType, url) in
            self.setPoints()
        })
    
    public func setPoints() {
        mainImageView.frame = CGRect(x:x, y:0, width:(mainImageView.image?.size.width)!/1.7, height:(mainImageView.image?.size.height)!/1.7)
        mainImageView.contentMode = .scaleAspectFill
        mainImageView.setNeedsDisplay()
        mainImageView.reloadInputViews()
        mainImageView.updateConstraintsIfNeeded()
    }
    

    2 回复  |  直到 7 年前
        1
  •  3
  •   Baig    7 年前

    您应该禁用预生成的约束。最简单的方法是使用自动调整大小遮罩而不是约束来设置视图的动画。

    mainImageView.translatesAutoresizingMaskIntoConstraints = true
    

    你可以把这个代码放到你的 -viewDidLoad mainImageView.sd_setImage(with:...

    最后但并非最不重要的一点是,您需要在块内调用layoutifneed。

    self.view.layoutIfNeeded()
    
        2
  •  0
  •   Chandler De Angelis    7 年前

    看起来您正在使用autolayout调整图像视图的大小,这可以解释为什么手动设置帧没有任何作用。您需要修改决定图像视图大小的约束,然后调用 mainImageView.layoutIfNeeded()