Xcode iOS保留UIImageView的纵横比,但保留填充宽度

Xcode iOS保留UIImageView的纵横比,但保留填充宽度,xcode,ios8,uiimageview,xcode6,Xcode,Ios8,Uiimageview,Xcode6,这是我第一个在iOS 8和XCode 6下从头开始的应用程序,所以这些间距问题一直困扰着我。在下面的图中,你可以看到我有一个UIImageView,我希望它是一个正方形,但我希望它也能延伸到整个屏幕的宽度。它有一个宽度和高度值,因此当应用程序运行时,屏幕会变宽,因此它在左上角会变成一个小框。我试着用我能想到的各种方法来处理约束,但是当我约束它时,图像会放大到全尺寸,覆盖掉屏幕上的所有东西。如何使其拉伸并保持1:1的纵横比 编辑 好吧,我错了。没有调整的不是UIImageView,而是整个视图。

这是我第一个在iOS 8和XCode 6下从头开始的应用程序,所以这些间距问题一直困扰着我。在下面的图中,你可以看到我有一个UIImageView,我希望它是一个正方形,但我希望它也能延伸到整个屏幕的宽度。它有一个宽度和高度值,因此当应用程序运行时,屏幕会变宽,因此它在左上角会变成一个小框。我试着用我能想到的各种方法来处理约束,但是当我约束它时,图像会放大到全尺寸,覆盖掉屏幕上的所有东西。如何使其拉伸并保持1:1的纵横比

编辑 好吧,我错了。没有调整的不是UIImageView,而是整个视图。
我将以编程方式设置框架,而不使用任何约束。这样做

  • 将ImageView链接到其视图控制器中的插座
  • 设置帧,使两个值相等

    frame.size.width/frame.size.height


  • 使用图像视图内容模式:

    [self.imageView setContentMode:UIViewContentModeScaleAspectFill];
    

    您似乎还希望帧的宽度填充屏幕。使用这些约束条件:

    • 到顶部、左侧和右侧的距离为0
    • 高度等于宽度约束
    • 图像比率1:1约束

    然后应适当调整图像视图的大小。

    将两侧和顶部约束为superview。您还可以说,例如,宽度/高度可以>=320,这有时会有所帮助。但请记住,它只适用于纵向,当您将UI切换到横向时,图像在填充宽度的同时不能保持方形,同时完全显示在屏幕上

    编辑:图像不应试图延伸到屏幕边界之外(纵向),只要您不告诉它应该“离底部这么远”


    编辑-2:将背景视图约束设置为superview。全部4个。

    这不只是影响视图中的图像,而不是视图本身吗?我用更多细节更新了我的问题。不调整的是整个视图,而不仅仅是图像。@Jhorra我更新了我的答案,希望这对您有用。要实现1:1的比例约束:[self.yourview addConstraint:[NSLayoutConstraint constraintWithItem:self.yourview属性:NSLayoutAttribute关联人:NSLayoutRelationEqual to Item:self.yourview属性:NSLayoutAttributeWidth乘数:(self.yourview.frame.size.height/self.yourview.frame.size.width)常量:0]];我认为这应该起作用。我用更多细节更新了我的问题。不调整的是整个视图,而不仅仅是图像。我用更多细节更新了我的问题。不调整的是整个视图,而不仅仅是图像。