【发布时间】: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 项目。
标签: objective-c autolayout nslayoutconstraint