AutoLayout不使用Storyboard或Interface Builder
我正在构build一个应用程序,我希望完全避免使用Storyboard和Interface Builder,因此应该在代码中指定所有UI。 我正在使用PureLayout ,一个很好的API来configurationAutoLayout
约束。
但是,我的问题是,似乎像AutoLayout
不使用Interface Builder时被禁用。 updateViewConstraints
,根据PureLayout
作者给出的build议放置布局的方法根本不被调用。
只是为了提供更多有关我的设置的信息:
- 删除
Main.storyboard
并从Info.plist
删除条目 - 在
AppDelegate.m
手动设置self.window
并添加MainMainController
UINavigationController
作为rootViewController
如上所述,我的主要问题是, updateViewConstraints
不会在MainViewController
调用,但UI元素都显示与我在初始化过程中传递给他们的frame
。
注意 :在我看来,我只是需要在某处启用某个标志来模仿Interface Builder中的checkbox,您可以使用它来指示是否要使用AutoLayout
。
MainViewController.m
@interface MainViewController () @property (nonatomic, strong) UIButton *startButton; @property (nonatomic, assign) BOOL didSetupConstraints; @end @implementation MainViewController - (void)viewDidLoad { [super viewDidLoad]; [self.view addSubview:self.startButton]; [self.view setTranslatesAutoresizingMaskIntoConstraints:NO]; } - (UIButton *)startButton { if (!_startButton) { UIButton *startButton = [UIButton buttonWithType:UIButtonTypeSystem]; CGRect startButtonFrame = CGRectMake(75.0, 75.0, 250.0, 44.0); startButton.frame = startButtonFrame; [startButton setTitle:@"Start" forState:UIControlStateNormal]; [startButton setTranslatesAutoresizingMaskIntoConstraints:NO]; _startButton = startButton; } return _startButton; } - (void)updateViewConstraints { NSLog(@"Update view contraints"); if (!self.didSetupConstraints) { [self.startButton autoCenterInSuperview]; self.didSetupConstraints = YES; } [super updateViewConstraints]; } @end