Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios “自动布局”保持在“图像视图”中_Ios_Iphone_Objective C_Xcode_Storyboard - Fatal编程技术网

Ios “自动布局”保持在“图像视图”中

Ios “自动布局”保持在“图像视图”中,ios,iphone,objective-c,xcode,storyboard,Ios,Iphone,Objective C,Xcode,Storyboard,我正在使用自动布局,这让我发疯。我已经尽了我所能,以防止UIImageView到处伸展。我不知道为什么会这样。我尝试使用约束,解决自动布局问题。目前,唯一的解决方案是改变自动布局本身 谁能告诉我为什么xcode完全忽略了我的约束?当我显式地将UIImage设置为320x320时,我希望它保持为320x320,但是没有 我想发布图片,但网站不允许我,我想在这个问题上添加代码,以便更具体,但实际上根本没有代码。我只是从情节提要中拖动了“UIImageView”,将其变小,按原样设置约束,它只是忽略了

我正在使用自动布局,这让我发疯。我已经尽了我所能,以防止UIImageView到处伸展。我不知道为什么会这样。我尝试使用约束,解决自动布局问题。目前,唯一的解决方案是改变自动布局本身

谁能告诉我为什么xcode完全忽略了我的约束?当我显式地将UIImage设置为320x320时,我希望它保持为320x320,但是没有


我想发布图片,但网站不允许我,我想在这个问题上添加代码,以便更具体,但实际上根本没有代码。我只是从情节提要中拖动了“UIImageView”,将其变小,按原样设置约束,它只是忽略了我的代码。

您可以尝试以编程方式添加UIImageView。 在
viewDidLoad
方法中或在需要的地方调用此代码

UIImageView *yourImageView = [[UIImageView alloc]initWithFrame:CGRectMake(50.0f, 50.0f, 320.0f, 320.0f)]; // x and y coordinates, width and height of UIImageView
[yourImageView setImage:[UIImage imageNamed:@"your_image.png"]];
[yourImageView setContentMode:UIViewContentModeCenter]; // you can try use another UIViewContentMode

[self.view addSubview:yourImageView];

使用autolayout时,尺寸检查器中的值几乎被忽略

您可能会认为,如果在Size Inspector上的框中键入一个数字,Xcode将自动创建约束以反映您键入的内容,但事实并非如此。您需要为
UIImageView
的高度和宽度自己创建“Pin”约束

  • 选择故事板上的图像视图

  • 单击情节提要屏幕右下角的“Pin”按钮

  • 在“宽度”和“高度”字段中键入所需的尺寸,并确保选中这些框

  • 单击“添加2个约束”按钮

完成后,您应该能够在屏幕右侧的尺寸检查器(紫色框)中看到您的约束


您需要确保您的
UIImageView
设置为“剪裁到边界”。如果没有,图像将溢出视图,并且看起来没有正确拉伸(即使实际上是这样)

在interface builder中,确保选中了“剪裁子视图”框

如果未使用interface builder,则以下代码将执行相同的操作:

yourImageView.clipsToBounds = YES;

我的问题是
ContentHuggingPriority
ContentCompressionResistancePriority

第一个控制保持视图“拥抱”图像(保持靠近图像且不扩展)的重要性,第二个控制视图的抗压缩性

我们使用,所以修复它的代码是:

[NSLayoutConstraint autoSetPriority:ALLayoutPriorityRequired forConstraints:^{
    [myImageView autoSetContentCompressionResistancePriorityForAxis:ALAxisHorizontal];
    [myImageView autoSetContentHuggingPriorityForAxis:ALAxisHorizontal];
}];
(我的问题只是在水平轴上)


2016年5月15日:更新为PureLayout v3语法。如果你使用的版本我也有同样的问题。我将UIImageView添加到原型单元格中,并希望将其与文本对齐,但在应用约束时,它会不断拉伸图像。在我的例子中,我将图像视图的“Mode”属性更改为“Aspect Fit”,效果很好。

定义“全身拉伸”以及您“尝试”的内容。您设置了哪些约束?添加了哪些约束?听起来superview的两侧(或顶部和底部,取决于拉伸的方式)都有约束。这个问题不难重现。1:将UIImageView置于情节提要的UIView中。2:将它缩小,至少使它没有屏幕那么大3:编译,并对它的工作原理感到敬畏。该网站甚至建议关闭自动布局。如果我只是制作一个单一的视图应用程序,我会的,但我不是,所以。。。。我已经为UIImageView本身的大小添加了限制。xcode完全完全忽略了这个约束。结果就是在我的屏幕上出现了一个可怕的完全拉伸的图像。你的内容模式是什么?可能发生的情况是,您的内容模式被设置为拉伸图像的模式,而您没有将clipsToBounds设置为YES。噢,哇。。。。。。。。。。。那个这一选择让我骂了史蒂夫·乔布斯三个小时。。。。哇!谢谢,我现在终于可以睡觉了。谢谢你,你真是个天才。谢谢你的回答,我试过了,但它还是非常大。UIImageView是像窗口一样的实际视图,还是可以被任何东西覆盖的临时视图?也就是说,如果我将320x320图像放在240x240图像视图中,它会变大吗?您可以尝试使用:[yourImageView setContentMode:UIViewContentModeCenter];谢谢你的回答,我都做了。事实证明,imageview没有被拉伸,导入到视图中的图像被剪切到视图之外。根据常识,默认情况下,里面的内容通常会保留在视图中,但我想不会。通过检查“剪辑子视图”解决了此问题。业余爱好者的错误,这是肯定的。@GyuhyeonLee:如果你刚开始使用iOS编程,不要假设默认情况下会发生任何事情-以我的经验,它几乎从来不会像我想象的那样运行。很高兴你找到了解决办法!虽然这样做有效,但我仍然认为在某些地方存在缺陷——至少在文档中,如果不是在UIImageView本身中的话。剪贴簿不是被记录为剪辑“子视图”吗?从什么时候开始,UIImageView中的图像被视为子视图?在文档中,他们称之为“基于视图的容器”——容器这个词给了他们一些不稳定的立足点。不管怎么说,UIKit文档如果不是脆弱和不一致的话就什么都不是了。伙计,你救了我的命!谢谢福。。。我本来想给霍格沃茨校长写封信,因为他的行为很神奇,但你救了我一天。这个解决方案简单明了。谢谢老实说,我从来没有像现在这样高兴地读过答案。先生,你是一位公认的英雄。我差点把我的电脑扔出窗外。我也遇到了同样的问题。使用Aspect Fit内容模式解决了此问题。仍然不知道为什么它的行为不正确。这是一个很好的解决方案。PureLayout现在已将其更改为[NSLayoutConstraint autoSetPriority…”但是。。。