作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
只需将使用 instantiateViewControllerWithIdentifier
创建的 Controller 中的 subview UIView
添加到当前 Controller View ,并添加约束以保持新 subview 的大小以覆盖整个区域。下面的代码适用于 iOS 7。iOS 8 将 subview 调整为左上角的一小部分。 iOS 7 实现了我的预期,即在父 View 的整个尺寸范围内调整 subview 的尺寸。我会附上一张图片,但没有代表。将 translatesAutoresizingMaskIntoConstraints
设置为 YES 可解决此问题,但随后 View 不会遵守约束并在方向更改或尺寸更改时调整大小。
spotCheckStoresViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"visitStoresViewController"];
spotCheckStoresViewController.mainViewController = self;
spotCheckStoresViewController.dataMode = kDataModeViews;
spotCheckStoresViewController.lastRow = [self getViewsLastRow];
spotCheckStoresViewController.view.tag = -200;
currentView = spotCheckStoresViewController.view;
[self addChildViewController:spotCheckStoresViewController];
[self.view insertSubview:currentView belowSubview:_menuViewController.view];
currentView.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:currentView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1.0 constant:0.0]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:currentView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTrailing multiplier:1.0 constant:0.0]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:currentView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:0.0]];
[self.view addConstraint:[NSLayoutConstraint constraintWithItem:currentView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0.0]];
//[self.view updateConstraints];
//[self.view layoutIfNeeded];
我也试过设置 subview 的框架。有什么想法可能会在 iOS 8 中更改以改变以这种方式使用的约束的行为吗?
最佳答案
在我的例子中,问题与标记为 UIView-Encapsulated-Layout-Width
和 UIView-Encapsulated-Layout-Height
的约束有关。当我删除它们时,一切都表现得好像我的 View 大小为零,一切都集中在屏幕的左上角。当我离开它们时,新的约束按预期工作。我还保留了标记为 _UILayoutSupportConstraint
的约束。
关于ios - subview 的约束在 iOS 8、XCode 6 (6A313) 中不起作用。适用于 iOS 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25817609/
我是一名优秀的程序员,十分优秀!