Ios 如何在Xcode 5情节提要中指定方形(实际上是圆形)头像,并启用自动布局?

Ios 如何在Xcode 5情节提要中指定方形(实际上是圆形)头像,并启用自动布局?,ios,xcode,sdwebimage,autolayout,Ios,Xcode,Sdwebimage,Autolayout,在Xcode 5中有没有一种方法可以指定图像视图应该是正方形的——无论是纵向还是横向 是否可以在打开自动布局的情节提要中使用,或者我必须在视图控制器源代码中使用 我已经准备好了。在顶部,它应该显示一个圆形的用户头像,所以我使用SDWebImage和CocoaPods 所以化身的边界应该是正方形的。当我通过这里的约束将其宽度和高度设置为280时 这可以工作-但仅在纵向模式下: 在横向方向上,这当然失败了: 所以我想知道是否有一个诀窍,使其工作的化身是完全圆的横向方向以及 更新: 旋转到横向时,会出

在Xcode 5中有没有一种方法可以指定图像视图应该是正方形的——无论是纵向还是横向

是否可以在打开自动布局的情节提要中使用,或者我必须在视图控制器源代码中使用

我已经准备好了。在顶部,它应该显示一个圆形的用户头像,所以我使用SDWebImage和CocoaPods

所以化身的边界应该是正方形的。当我通过这里的约束将其宽度和高度设置为280时

这可以工作-但仅在纵向模式下:

在横向方向上,这当然失败了:

所以我想知道是否有一个诀窍,使其工作的化身是完全圆的横向方向以及

更新:

旋转到横向时,会出现以下警告:

2014-04-26 17:57:00.967 MyPhone[1220:60b] Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
(
    "<NSLayoutConstraint:0x8c82e10 H:[NZCircularImageView:0x8c82a70(280)]>",
    "<NSLayoutConstraint:0x8c87640 H:[NZCircularImageView:0x8c82a70]-(20)-|   (Names: '|':UIView:0x8c86870 )>",
    "<NSLayoutConstraint:0x8c876a0 H:|-(20)-[NZCircularImageView:0x8c82a70]   (Names: '|':UIView:0x8c86870 )>",
    "<NSAutoresizingMaskLayoutConstraint:0x8d48410 h=--& v=--& V:[UIView:0x8c86870(480)]>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x8c82e10 H:[NZCircularImageView:0x8c82a70(280)]>

Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.

根据杰西的建议,我删除了图像视图左、右的冗余约束,并添加了水平对齐以保持图像视图在中间。 但是,我仍然不知道在横向模式下如何收缩图像视图-这样它就不会与视图底部的2个标签和按钮重叠:

我正在努力实现的目标:

有一个圆形,即其边界应为顶部的方形化身 2个标签和按钮应始终在底部可见 化身应该能够占据任何可用空间 更新2:

我在这里为名字标签添加了1:1的比例约束,并且从图像视图底部添加了20px:

现在风景很好,正是我想要的:

但纵向模式不正常:宽度不合适:

如果我只添加左/右约束,看起来不太好:


你的观点过于狭隘;您已经为superview的左边缘和右边缘设置了宽度和约束。这在横向环境中是无法满足的,因此您必须删除一些约束。你可能在日志中发现了一个错误


我不确定您想要什么效果,但您可以尝试删除左右边缘约束,而不是添加水平居中约束。这将使您在两个方向上查看相同的大小。如果您想要一些不同的东西,请尝试添加更多细节或您想要的景观布局模型。

您的视图过度受限;您已经为superview的左边缘和右边缘设置了宽度和约束。这在横向环境中是无法满足的,因此您必须删除一些约束。你可能在日志中发现了一个错误


我不确定您想要什么效果,但您可以尝试删除左右边缘约束,而不是添加水平居中约束。这将使您在两个方向上查看相同的大小。如果您想要一些不同的东西,请尝试添加更多细节或您想要的横向布局模型。

您可以将图像的宽度固定为280px,然后按ctrl键从图像视图拖动到自身,并使用乘数1选择纵横比约束。这将使图像视图的高度与其宽度相匹配

您可以将图像的宽度固定为280px,然后按住ctrl键从图像视图拖动到自身,并使用乘数1选择纵横比约束。这将使图像视图的高度与其宽度相匹配

我是这样做的:

将比率设置为1:1。 将水平左右间距设置为>=约束。 将顶部空间设置为固定值 将从图像到第一个标签的垂直间距设置为>=约束 将标签固定在底部 将图像水平居中。

这里是我的限制的屏幕截图,注意固定宽度在构建时被移除。这只是为了使IB使正方形不是0px


我是这样做的:

将比率设置为1:1。 将水平左右间距设置为>=约束。 将顶部空间设置为固定值 将从图像到第一个标签的垂直间距设置为>=约束 将标签固定在底部 将图像水平居中。

这里是我的限制的屏幕截图,注意固定宽度在构建时被移除。这只是为了使IB使正方形不是0px


对从ImageView拖动到自身,而不是从ImageView拖动到SuperView。然后可以将宽度约束为等于高度。这需要最新的Xcode,我认为是5.1或更高版本,否则您必须在代码中完成。是的。从ImageView拖动到自身,而不是从ImageView拖动到SuperView。然后可以将宽度约束为等于高度。这需要最新的Xcode,我认为是5.1或更高版本,否则你必须在代码中完成。+1谢谢-我已经删除了多余的限制,并将图像视图水平居中,但我仍然不知道如何在横向模式下缩小图像视图。。。请看一下我的最新问题
您应该遵循Azat的建议,将图像视图的宽度固定到其高度,纵横比为1。这样就不会出错了。要使其位于按钮上方,只需在图像视图的底部与按钮的顶部之间进行约束。并从图像视图中删除高度限制,否则它将再次受到过度限制。Jesse,你能看看更新2吗?我添加了比例1:1约束和底部约束-但是如何固定图像视图宽度?您的视图又过度约束了吗?您可能需要更改某些约束的优先级,或者使其中一些约束不相等。+1谢谢-我已删除了冗余约束并将图像视图水平居中,但我仍然不知道如何在横向模式下缩小图像视图。。。请看一看我的最新问题。你应该按照Azat的建议,将图像视图的宽度固定到其高度,纵横比为1。这样就不会出错了。要使其位于按钮上方,只需在图像视图的底部与按钮的顶部之间进行约束。并从图像视图中删除高度限制,否则它将再次受到过度限制。Jesse,你能看看更新2吗?我添加了比例1:1约束和底部约束-但是如何固定图像视图宽度?您的视图又过度约束了吗?您可能需要更改某些约束的优先级,或者将其中一些约束设置为不平等约束。+1谢谢,但如果我遵循您的建议4(与6相同),那么化身的维度将变为零?我不明白如何防止化身缩小到0x0——当我使其左、右、底部约束大于或等于时。是的,4和6是相同的。我没有注意到我已经写了两次了。+1谢谢,但是如果我遵循你的建议4,它与6?相同,那么化身的维度将变为零?我不明白如何防止化身缩小到0x0——当我使其左、右、底部约束大于或等于时。是的,4和6是相同的。我没有注意到我已经写了两次了。