用于调整屏幕大小视图的ios autolayout约束

时间:2013-10-01 12:53:04

标签: iphone ios objective-c xcode autolayout

我是ios开发的新手,仍然试图摆脱autolayout。使用下面的图片可以更好地解释我面临的问题

App on Iphone 5 screen size 4 inch

App on iphone 4 screen size 3. inch

现在我要删除iphone 4上的“使用社交网络登录”。我想要的是如何将“Google +”图标置于“OR标签”和“未注册开始”按钮之间 它也应该调整大小以适应它们之间。

实现这一目标需要什么样的约束。如果有人能指出我正确的方向,那将是很有帮助的。这一整天我一直在低头。感谢。

2 个答案:

答案 0 :(得分:2)

在[或]和[start ..]按钮之间居中[g +]: 你需要在故事板上做两件事:

  1. 选择[g +]和[或]
  2. 选择编辑器 - >引脚垂直间距
  3. 然后

    1. 选择[g +]和[开始]
    2. 选择编辑器 - >引脚垂直间距
    3. 每次都应该看到两个对象之间出现一条垂直线。这表示在3.5英寸或4英寸iPhone显示屏上,该空间始终是相同的天气。

      我不明白为什么你想让g +按钮调整大小..这实际上是UI指南,它指示不同的用户不应该有不同的用户体验(请参阅为什么没有替换的原因) iOS 7.0已弃用sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:方法)

      同样的逻辑阻止改变标签/按钮上的字体大小,这取决于形状因素等导致不同用户具有不同体验,这与阻止您根据外形尺寸放大或缩小[g +]按钮的逻辑相同情况也是如此。

答案 1 :(得分:0)

如果您只想让“G”图形居中于“OR”标签和“未注册开始”标签之间,您可以:

  1. 添加一个视图(你不会真正看到它,因为它会使它透明,但它对于对齐有用),其顶部约束链接到“OR”标签,其底部约束链接到“未注册开始”标签:

  2. 然后将“g +”图形放在该视图中,将其中心垂直和水平约束与其超视图对齐。

    enter image description here

  3. 如果你这样做,“g +”按钮将保持在这两个标签之间的中间位置(当然,假设“未注册开始”标签对其超级视图有一个底部约束,即它固定在底部的观点)。

    就调整该按钮的大小而言,我个人建议不要这样做,如果你愿意的话,你可以删除我们上面创建的那个透明视图,然后用“g +”图像/按钮本身来做。您需要将该imageview的内容大小设置为“Aspect Fit”(因此不会失真)。

    同样,我真的不喜欢后一种方法,但你可以做到。


    我认为你想在运行时删除“使用社交网络登录”标签。有两种方法:

    1. 一种简单的方法是为该标签的高度约束创建IBOutlet,例如logInWithSocialNetworkHeightConstraint,然后您可以执行以下操作:

      self.logInWithSocialNetwork.text = nil;
      self.logInWithSocialNetworkHeightConstraint.constant = nil;
      [self.view layoutIfNeeded];
      
    2. 另一种方法是在“OR”标签和“g +”图形的适当视图之间定义约束。这本身有两种可能的方法:

      • 您可以在IB中定义它,但是使用小于1000的优先级来定义它。因为“Login with ...”标签的约束将具有更高的优先级,当该标签存在时,这些约束将取得优先权。如果您删除标签:

        [self.logInWithSocialNetwork removeFromSuperview];
        [self.view layoutIfNeeded];
        

        然后,您定义的新约束将发挥作用。

      • 您也可以删除“Login with ...”标签,然后以编程方式在“OR”按钮和“g +”图形视图之间添加新约束。