在我的UIImageView中约束有什么问题,为什么我不能在我的UIViewController上拉伸图像?
问题描述:
这是我目前的状况:在我的UIImageView中约束有什么问题,为什么我不能在我的UIViewController上拉伸图像?
我有一个UIViewController
与UIImageView
就可以了。
后者具有以下限制:trailing to superview
,leading to superview
,top space to top layout guide
,width equals 320
,height equals 820
。
高度和宽度连为网点上我的课,我设定他们viewDidLoad
:
@IBOutlet weak var imageHeightconstraint: NSLayoutConstraint!
@IBOutlet weak var imageWidthConstraint: NSLayoutConstraint!
@IBOutlet weak var backgroundImage: UIImageView!
override viewDidLoad(){
backgroundImage.af_setImageWithURL(NSURL(string: photoURL)!)
imageHeightconstraint.constant = backgroundImage.image!.size.height
imageWidthConstraint.constant = self.view.frame.size.width
}
现在,我的形象是这样的:
是480x640px照片。我试图在我的故事板中将模式设置为center
,scale to fill
,aspect fill
,aspect fit
和top
。
例如,这是center
:
aspect fit
:
aspect fill
:
但我不知道如何从左到右拉伸此图像并保持纵横比,因此整张照片都可见,其左右边缘粘在屏幕的左侧和右侧边缘。 我认为这两个约束可以解决它:
imageHeightconstraint.constant = backgroundImage.image!.size.height
imageWidthConstraint.constant = self.view.frame.size.width
但它不起作用。也许问题是照片的分辨率很低(480x640),所以高度只有那么小?你能给我任何提示我怎么修复它?
答
您可能不会呼叫setNeedsLayout()
,然后layoutIfNeeded()
。
为了让UI更新,您需要告诉视图更新,而不仅仅是更改约束。无论哪种方式,如果您希望imageView始终如一地填满屏幕,并且ImageView上不应该有高度/宽度,只需要拥抱两侧。同时确保这些限制忽略了利润。
如果您希望图像填充imageView,请将调整大小模式设置为aspectFill,并且如果您要调整大小,直到左/右或顶部/底部到达视图的边缘,则aspectFit就是你需要。