ios objective-c autolayout storyboard pure-layout

ios - AutoLayout sin uso de Storyboards o Interface Builder



objective-c pure-layout (0)

Estoy construyendo una aplicación en la que quiero evitar por completo el uso de Storyboard y el Interface Builder en general, por lo que toda la interfaz de usuario debe especificarse en el código. Estoy usando PureLayout , una buena API para configurar restricciones de AutoLayout .

Sin embargo, mi problema es que parece que AutoLayout está deshabilitado cuando no se usa Interface Builder. updateViewConstraints , el método donde pongo el diseño de acuerdo con la recomendación dada por el autor de PureLayout , no se llama en absoluto.

Solo para dar un poco más de información sobre mi configuración:

  • eliminó Main.storyboard y eliminó la entrada de mi Info.plist
  • configuró manualmente self.window en AppDelegate.m y agregó UINavigationController con MainMainController como rootViewController

Como mencioné, mi principal problema es que no se llama a MainViewController en MainViewController pero los elementos de la UI se muestran todos con los frame que les pasé durante la inicialización.

Nota : me parece que solo necesito habilitar alguna bandera en algún lugar para imitar la casilla de verificación de Interface Builder con la que puede indicar si desea usar 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