通过更改框架调整 UIImageView 的大小
Resize UIImageView by changing frame
我在故事板中添加了一个带有默认图像的 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()
}
我阅读了关于堆栈溢出的各种帖子,并尝试使用上述方法调整图像的大小,但没有成功。还有其他方法可以调整图像视图的大小吗?
您似乎在使用自动布局来调整图像视图的大小,这可以解释为什么手动设置框架没有任何作用。您需要修改决定图像视图大小的约束,然后调用 mainImageView.layoutIfNeeded()
.
您应该禁用预生成的约束。最简单的方法是使用自动调整大小蒙版而不是动画视图的约束。
mainImageView.translatesAutoresizingMaskIntoConstraints = true
您可以将此代码放入您的 -viewDidLoad
方法或 mainImageView.sd_setImage(with:...
上方
最后但同样重要的是,您需要在块内调用 layoutIfNeeded。
self.view.layoutIfNeeded()
我在故事板中添加了一个带有默认图像的 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()
}
我阅读了关于堆栈溢出的各种帖子,并尝试使用上述方法调整图像的大小,但没有成功。还有其他方法可以调整图像视图的大小吗?
您似乎在使用自动布局来调整图像视图的大小,这可以解释为什么手动设置框架没有任何作用。您需要修改决定图像视图大小的约束,然后调用 mainImageView.layoutIfNeeded()
.
您应该禁用预生成的约束。最简单的方法是使用自动调整大小蒙版而不是动画视图的约束。
mainImageView.translatesAutoresizingMaskIntoConstraints = true
您可以将此代码放入您的 -viewDidLoad
方法或 mainImageView.sd_setImage(with:...
最后但同样重要的是,您需要在块内调用 layoutIfNeeded。
self.view.layoutIfNeeded()