蓝色的一切都是ImageView的一部分(在Sketch ==>设计中导出为PNG ==>导入到ImageView中)。因此,它可以很好地扩展,没有任何约束。检查图形变得更大,我的复选标记也表示用户名和密码的位置。但是,我的TextFields(电子邮件和PIN)不会向上扩展,也不会移动到复选标记所指示的位置。我基本上希望他们留在屏幕的相同部分(例如距离左边40%,距离右边10%......),因为我认为这可以解决我的问题。我已经使用了各种约束(超级视图,领导等)并尝试了一个容器,但没有任何工作。我当然可以用不同的尺寸再次导出我的Sketch文件,但我不认为我的背景图像有任何问题。但是,我不能将我的背景图像分成更小的东西,因为有一个我不想搞砸的背景。此外,复选标记实际上是围绕用户名和密码的框。假设除了将imageView绑定到边距之外,我没有任何约束。
谢谢!
- kmuzumdar
答案 0 :(得分:1)
看起来好像你打破了iPhone 6外壳上的一些限制,或者你已经将<40>设置为等于,请记住只是缩放是不够的,屏幕比例是设备之间也有所不同。
试试这个..
将电子邮件输入和 Pin#设置为垂直居中,并带有相应的复选标记
在复选标记及其标签之间设置大于或等于约束。让他们远离彼此。
您可能需要手动进行一些调整,为此您总是可以设置NSLayoutConstraint
个出口,只需检查您是否在iphone 6上并更改.constant
属性约束
这应该这样做:
let height = UIScreen.mainScreen().bounds.height
if height == 667 { // iphone 6 screen's height
//Adjust your constrains
}
<强>更新强>
阅读一些评论,我注意到一些重要的事情,那就是你不能实例化用于添加约束的复选标记,在这种情况下,你可以通过设备特定的约束解决所有问题。
第3点和第4点描述的那个。
只需继续并手动设置所有内容,相应地根据每个设备屏幕的设计更改约束.constant
属性。 Here's a link to these sizes
我担心你的情况会有更好的方法。
其他一些东西,进入我的脑海,一些非常强大的东西,那就是每个约束的乘数属性。我记得用它们来构建一个tic tac toe board,通过这种技术设置线条的确切位置。所以,这可能是你的解决方案。 Here's a link如何通过代码使用它们。只需查看字幕标准程序布局即可 你会发现这样的东西:
self.constraintToAnimate = [NSLayoutConstraint constraintWithItem:label
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.view
attribute:NSLayoutAttributeBottom
multiplier:0.25
constant:0.0];
[self.view addConstraint:constraint];
并且,以下解释。
前两个参数决定了约束的目标, label,以及要设置的属性:top。第三个参数, relatedBy,接受NSLayoutRelationEqual之一, NSLayoutRelationGreaterThanOrEqual,或 NSLayoutRelationLessThanOrEqual。接下来的两个参数允许我们 设置我们将从中派生值的源视图和属性。 在这里,我们说我们想要使用我们的底线 超级视图,在4英寸设备上将是568点。最后我们已经 有一个乘数,我们将用它来得出我们的价值 - 0.25(25%)。 我们没有使用常量参数,所以我们将其设置为0.0。放 在数学方程式中,它看起来像这样: label.top = superview.bottom * 0.25。
所以,这可以是另一种方式,而不依赖于代码,因为这可以通过Storyboard实现。