小编Seb*_*ano的帖子

使用 Objective C 以编程方式约束

我不知道我做错了什么:我正在创建一个占据所有屏幕的 UIView(它已经有约束),然后以编程方式我正在创建一个 UI 图像视图:

_panel = [[UIImageView alloc] initWithImage:[self loadImageForKey:@"registerPanel"]];
_panel.frame = CGRectMake(0, 0, 100, 100);
_panel.exclusiveTouch = YES;
_panel.userInteractionEnabled = YES,
[self.scrollView addSubview:_panel];
Run Code Online (Sandbox Code Playgroud)

问题来了:我正在向我创建的面板添加约束,但它崩溃了(我在 ViewWillAppear 上执行此操作):

NSLayoutConstraint *centreHorizontallyConstraint = [NSLayoutConstraint
                                                    constraintWithItem:_panel
                                                    attribute:NSLayoutAttributeCenterX
                                                    relatedBy:NSLayoutRelationEqual
                                                    toItem:self.view
                                                    attribute:NSLayoutAttributeCenterX
                                                    multiplier:1.0
                                                    constant:0];

NSLayoutConstraint *centreVerticalConstraint = [NSLayoutConstraint
                                                constraintWithItem:_panel
                                                attribute:NSLayoutAttributeCenterX
                                                relatedBy:NSLayoutRelationEqual
                                                toItem:self.view
                                                attribute:NSLayoutAttributeCenterX
                                                multiplier:1.0
                                                constant:0];


[_panel addConstraint:centreHorizontallyConstraint];
[_panel addConstraint:centreVerticalConstraint];
Run Code Online (Sandbox Code Playgroud)

错误消息:添加到视图时,约束的项必须是该视图(或视图本身)的后代。如果在组装视图层次结构之前需要解决约束,这将崩溃。中断 -[UIView _viewHierarchyUnpreparedForConstraint:] 进行调试。

constraints objective-c ios autolayout

2
推荐指数
1
解决办法
6215
查看次数

标签 统计

autolayout ×1

constraints ×1

ios ×1

objective-c ×1