
升级到XCode 5和iOS7后,我发现我需要清除所有旧的限制,以便考虑默认的半透明状态栏,否则我的工具栏将落在状态栏下.尽管调用setEdgesForExtendedLayout:与UIRectEdgeNone无关.
我现在试图在vIEwDIDLoad中以编程方式创建所有的约束:
// self.vIEw.translatesautoresizingMaskIntoConstraints = NO; // errors either wayNSArray *vIEwHorizConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_toolbar]|" options:0 metrics:nil vIEws:NSDictionaryOfVariableBindings(_toolbar)];[self.vIEw addConstraints:vIEwHorizConstraints];vIEwHorizConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_vIEwContainer]|" options:0 metrics:nil vIEws:NSDictionaryOfVariableBindings(_vIEwContainer)];[self.vIEw addConstraints:vIEwHorizConstraints];NSArray *vIEwVertConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(20)-[_toolbar(44)]-[_vIEwContainer]|" options:0 metrics:nil vIEws:NSDictionaryOfVariableBindings(_toolbar,_vIEwContainer)];[self.vIEw addConstraints:vIEwVertConstraints];NSArray *tableContainerVertConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_tableVIEw(<=460@999)][_vIEwinputContainer(44)]|" options:0 metrics:nil vIEws:NSDictionaryOfVariableBindings(_tableVIEw,_vIEwinputContainer)];[_vIEwtableContainer addConstraints:tableContainerVertConstraints];NSArray *containerVertConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_vIEwtableContainer][_vIEwOptions]" options:0 metrics:nil vIEws:NSDictionaryOfVariableBindings(_vIEwtableContainer,_vIEwOptions)];[_vIEwContainer addConstraints:containerVertConstraints];// _constraintContainerVertSpace = [NSLayoutConstraint constraintWithItem:_vIEwtableContainer attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:_vIEwContainer attribute:NSLayoutAttributeTrailing multiplIEr:1 constant:0]; // same as belowcontainerVertConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[_vIEwtableContainer]|" options:0 metrics:nil vIEws:NSDictionaryOfVariableBindings(_vIEwtableContainer)];_constraintContainerVertSpace = [containerVertConstraints lastObject];[_vIEwContainer addConstraint:_constraintContainerVertSpace];containerVertConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-(>=0)-[_vIEwOptions]-(>=-216@999)-|" options:0 metrics:nil vIEws:NSDictionaryOfVariableBindings(_vIEwOptions)];[_vIEwContainer addConstraints:containerVertConstraints];
但是,如果我尝试更改我的containerVIEw和tableContainerVIEw之间的垂直空间约束,我会收到错误. (我正在尝试调整tableContainerVIEw的大小以缩小与键盘的外观.)
[UIVIEw animateWithDuration:0.25f delay:0 options:UIVIEwAnimationoptionCurveEaseInOut animations:^{ _constraintContainerVertSpace.constant = -keyboardHeight; } completion:nil]; 这些是不能同时满足的约束:
("<NSIBPrototyPingLayoutConstraint:0x140d7bb0 'IB auto generated at build time for vIEw with fixed frame' V:|-(460)-[UIVIEw:0x140ddef0] (names: '|':UIVIEw:0x140dde60 )>","<NSIBPrototyPingLayoutConstraint:0x140d7c10 'IB auto generated at build time for vIEw with fixed frame' V:[UIVIEw:0x140ddef0(44)]>","<NSLayoutConstraint:0x14d9db30 V:[UIVIEw:0x140ddef0]-(0)-| (names: '|':UIVIEw:0x140dde60 )>","<NSIBPrototyPingLayoutConstraint:0x140e0290 'IB auto generated at build time for vIEw with fixed frame' V:|-(0)-[UIVIEw:0x140dde60] (names: '|':UIVIEw:0x140dddd0 )>","<NSLayoutConstraint:0x14d9df60 V:[UIVIEw:0x140dde60]-(-216)-| (names: '|':UIVIEw:0x140dddd0 )>","<NSIBPrototyPingLayoutConstraint:0x140e0830 'IB auto generated at build time for vIEw with fixed frame' V:|-(64)-[UIVIEw:0x140dddd0] (names: '|':UIVIEw:0x140e0470 )>","<NSLayoutConstraint:0x14d9d820 V:[UIVIEw:0x140dddd0]-(0)-| (names: '|':UIVIEw:0x140e0470 )>","<NSautoresizingMaskLayoutConstraint:0x1403a0b0 h=--& v=--& V:[UIVIEw:0x140e0470(568)]>")Will attempt to recover by breaking constraint <NSLayoutConstraint:0x14d9db30 V:[UIVIEw:0x140ddef0]-(0)-| (names: '|':UIVIEw:0x140dde60 )> UIVIEw:0x140dde60在这种情况下是_vIEwtableContainer. 0x140ddef0 = _vIEwinputContainer. 0x140dddd0 = _vIEwContainer.
为什么当我设置将autotoresizingMaskIntoConstraints转换为NO时,由IB创建的NSIBPrototyPingLayoutConstraint V:| – (460) – [UIVIEw:0x140ddef0(_vIEwinputContainer)],当我已经在_vIEwinputContainer和上面的_tableVIEw之间定义了明确的垂直约束?
我尝试在乐器中使用可可版面,但是有太多的噪音,无法理解它.
解决方法 除了使用translateautoresizingMaskIntoConstraints之外,我不得不手动删除视图上的约束.[_vIEwContainer removeConstraints:_vIEwContainer.constraints];[self.vIEw removeConstraints:self.vIEw.constraints];
添加这些更改后,动画没有更多的错误.
总结以上是内存溢出为你收集整理的Objective-c – 由Interface Builder生成的NSIBPrototypingLayoutConstraint autolayout约束的iOS7问题全部内容,希望文章能够帮你解决Objective-c – 由Interface Builder生成的NSIBPrototypingLayoutConstraint autolayout约束的iOS7问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)