如何在没有 Interface Builder 的情况下将 UIButton 对象的中心约束到其父视图
Posted
技术标签:
【中文标题】如何在没有 Interface Builder 的情况下将 UIButton 对象的中心约束到其父视图【英文标题】:How to constraint the center of a UIButton object to its superview without Interface Builder 【发布时间】:2019-05-05 12:55:06 【问题描述】:祝大家好运!请原谅我有点麻烦,但尽管我付出了所有努力,但我还是未能让自动布局的东西在我的代码中工作。我正在构建没有 Xcode 的 ios 应用程序,主要是在命令行上。因此,我认为它可能会导致一些与 Auto Layout 相关的问题。请在下面找到将 UIButton 对象的中心约束到其父视图的最简单尝试。
到目前为止,我已经尝试过各种布局技术,包括锚定、NSLayotConstraint constraintWithItem: 和 VFL。以上都没有对子视图的位置产生任何影响。我既没有编译也没有运行时错误。 TranslatesAutoresizingMaskIntoConstraints 已关闭。老实说,让我的代码没有按预期运行的原因让我感到震惊。更重要的是,我已经浏览了许多在线可用的自动布局示例。任何帮助将不胜感激。
NSLayoutConstraint *constraint;
[aButton setTranslatesAutoresizingMaskIntoConstraints:NO];
constraint =
[NSLayoutConstraint
constraintWithItem:aButton
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:aButton.superview
attribute:NSLayoutAttributeCenterX
multiplier:1.0f
constant:0.0f];
constraint.active = YES;
[aButton.superview addConstraint:constraint];
constraint =
[NSLayoutConstraint
constraintWithItem:aButton
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationEqual
toItem:aButton.superview
attribute:NSLayoutAttributeCenterY
multiplier:1.0f
constant:0.0f];
constraint.active = YES;
[aButton.superview addConstraint:constraint];
```
【问题讨论】:
不要调用 addConstraint。只需将 active 设置为 YES 就足够了。 “我在没有 Xcode 的情况下构建我的 iOS 应用程序,主要是在命令行上”是什么意思? 您是否在创建和激活约束之前将按钮添加到其超级视图? @matt 非常感谢您的建议,但没有任何区别。我的意思是我只使用 clang 编译我的 iOS 项目,我也不使用 Interface Builder。 不使用Interface Builder也没关系。但是我看不出没有 Xcode 怎么能有一个 iOS 项目。 【参考方案1】:事实证明,问题是由于我链接了错误的 SDK 而造成的。我应该使用 iPhoneSimulator12.1.sdk 而不是 iPhoneSimulator.sdk。
-isysroot $(ISYS_ROOT)
ISYS_ROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.1.sdk
感谢所有努力提供帮助的人。
【讨论】:
以上是关于如何在没有 Interface Builder 的情况下将 UIButton 对象的中心约束到其父视图的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Interface Builder 中向 NSMenu 添加其他项目?
应该如何创建 UINavigation 工具栏子视图项 Interface Builder?
Xcode Interface Builder Style Guide - 如何添加颜色
如何在 Interface Builder 中的 UIViewController 中自动调整 UIView Outlet 的大小