我是ios开发的新手,仍然试图摆脱autolayout。使用下面的图片可以更好地解释我面临的问题
现在我要删除iphone 4上的“使用社交网络登录”。我想要的是如何将“Google +”图标置于“OR标签”和“未注册开始”按钮之间 它也应该调整大小以适应它们之间。
实现这一目标需要什么样的约束。如果有人能指出我正确的方向,那将是很有帮助的。这一整天我一直在低头。感谢。
答案 0 :(得分:2)
在[或]和[start ..]按钮之间居中[g +]: 你需要在故事板上做两件事:
然后
每次都应该看到两个对象之间出现一条垂直线。这表示在3.5英寸或4英寸iPhone显示屏上,该空间始终是相同的天气。
我不明白为什么你想让g +按钮调整大小..这实际上是UI指南,它指示不同的用户不应该有不同的用户体验(请参阅为什么没有替换的原因) iOS 7.0已弃用sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:方法)
同样的逻辑阻止改变标签/按钮上的字体大小,这取决于形状因素等导致不同用户具有不同体验,这与阻止您根据外形尺寸放大或缩小[g +]按钮的逻辑相同情况也是如此。
答案 1 :(得分:0)
如果您只想让“G”图形居中于“OR”标签和“未注册开始”标签之间,您可以:
添加一个视图(你不会真正看到它,因为它会使它透明,但它对于对齐有用),其顶部约束链接到“OR”标签,其底部约束链接到“未注册开始”标签:
然后将“g +”图形放在该视图中,将其中心垂直和水平约束与其超视图对齐。
如果你这样做,“g +”按钮将保持在这两个标签之间的中间位置(当然,假设“未注册开始”标签对其超级视图有一个底部约束,即它固定在底部的观点)。
就调整该按钮的大小而言,我个人建议不要这样做,如果你愿意的话,你可以删除我们上面创建的那个透明视图,然后用“g +”图像/按钮本身来做。您需要将该imageview的内容大小设置为“Aspect Fit”(因此不会失真)。
同样,我真的不喜欢后一种方法,但你可以做到。
我认为你想在运行时删除“使用社交网络登录”标签。有两种方法:
一种简单的方法是为该标签的高度约束创建IBOutlet
,例如logInWithSocialNetworkHeightConstraint
,然后您可以执行以下操作:
self.logInWithSocialNetwork.text = nil;
self.logInWithSocialNetworkHeightConstraint.constant = nil;
[self.view layoutIfNeeded];
另一种方法是在“OR”标签和“g +”图形的适当视图之间定义约束。这本身有两种可能的方法:
您可以在IB中定义它,但是使用小于1000的优先级来定义它。因为“Login with ...”标签的约束将具有更高的优先级,当该标签存在时,这些约束将取得优先权。如果您删除标签:
[self.logInWithSocialNetwork removeFromSuperview];
[self.view layoutIfNeeded];
然后,您定义的新约束将发挥作用。
您也可以删除“Login with ...”标签,然后以编程方式在“OR”按钮和“g +”图形视图之间添加新约束。