Skip to content

Instantly share code, notes, and snippets.

@pec1985
Last active August 29, 2015 13:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pec1985/9006628 to your computer and use it in GitHub Desktop.
Save pec1985/9006628 to your computer and use it in GitHub Desktop.
Playing around with autolayout in iOS
- (void)loadView
{
self.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
UIView *view = [[UIView alloc] init];
view.backgroundColor = [UIColor redColor];
[view setBackgroundColor:[UIColor redColor]];
[self setView:view];
UIButton *dismissButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
dismissButton.backgroundColor = [UIColor whiteColor];
dismissButton.translatesAutoresizingMaskIntoConstraints = NO;
[dismissButton setTitle:@"Dismiss" forState:UIControlStateNormal];
UILabel *disclosureLabel = [[UILabel alloc] init];
disclosureLabel.font = [UIFont boldSystemFontOfSize:14];
disclosureLabel.numberOfLines = 0;
disclosureLabel.shadowOffset = CGSizeMake(0.0, -1.0);
disclosureLabel.text = @"Error messages will only be displayed during development. When your app is packaged for final distribution, no error screen will appear. Test your code!";
disclosureLabel.textColor = [UIColor blackColor];
disclosureLabel.translatesAutoresizingMaskIntoConstraints = NO;
UIView *centerView = [[UIView alloc] init];
centerView.translatesAutoresizingMaskIntoConstraints = NO;
UILabel *titleLabel = [[UILabel alloc] init];
titleLabel.font = [UIFont boldSystemFontOfSize:32];
titleLabel.shadowColor = [UIColor darkGrayColor];
titleLabel.shadowOffset = CGSizeMake(2.0, 1.0);
titleLabel.text = @"Application Error";
titleLabel.textAlignment = NSTextAlignmentCenter;
titleLabel.textColor = [UIColor greenColor];
titleLabel.translatesAutoresizingMaskIntoConstraints = NO;
UILabel *messageLabel = [[UILabel alloc] init];
messageLabel.font = [UIFont boldSystemFontOfSize:20];
messageLabel.numberOfLines = 0;
messageLabel.shadowColor = [UIColor blackColor];
messageLabel.shadowOffset = CGSizeMake(0.0, -1.0);
messageLabel.text = @"Some Javascript syntax error here...";
messageLabel.textAlignment = NSTextAlignmentCenter;
messageLabel.textColor = [UIColor whiteColor];
messageLabel.translatesAutoresizingMaskIntoConstraints = NO;
[view addSubview:titleLabel];
[view addSubview:centerView];
[centerView addSubview:messageLabel];
[centerView addSubview:dismissButton];
[view addSubview:disclosureLabel];
[titleLabel release];
[centerView release];
[messageLabel release];
[disclosureLabel release];
[view release];
NSLayoutConstraint *disclosureContraint1 = [NSLayoutConstraint constraintWithItem:disclosureLabel
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:view
attribute:NSLayoutAttributeLeading
multiplier:1
constant:20];
NSLayoutConstraint *disclosureContraint2 = [NSLayoutConstraint constraintWithItem:view
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:disclosureLabel
attribute:NSLayoutAttributeTrailing
multiplier:1
constant:20];
NSLayoutConstraint *disclosureContraint3 = [NSLayoutConstraint constraintWithItem:view
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:disclosureLabel
attribute:NSLayoutAttributeBottom
multiplier:1
constant:20];
NSLayoutConstraint *titleConstraint1 = [NSLayoutConstraint constraintWithItem:titleLabel
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:view
attribute:NSLayoutAttributeTop
multiplier:1
constant:20];
NSLayoutConstraint *titleConstraint2 = [NSLayoutConstraint constraintWithItem:titleLabel
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:view
attribute:NSLayoutAttributeLeading
multiplier:1
constant:20];
NSLayoutConstraint *titleConstraint3 = [NSLayoutConstraint constraintWithItem:view
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:titleLabel
attribute:NSLayoutAttributeTrailing
multiplier:1
constant:20];
NSLayoutConstraint *messageConstraint1 = [NSLayoutConstraint constraintWithItem:centerView
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:messageLabel
attribute:NSLayoutAttributeTrailing
multiplier:1
constant:0];
NSLayoutConstraint *messageConstraint2 = [NSLayoutConstraint constraintWithItem:messageLabel
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:centerView
attribute:NSLayoutAttributeLeading
multiplier:1
constant:0];
NSLayoutConstraint *messageConstraint3 = [NSLayoutConstraint constraintWithItem:messageLabel
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:centerView
attribute:NSLayoutAttributeTop
multiplier:1
constant:0];
NSLayoutConstraint *buttonConstraint1 = [NSLayoutConstraint constraintWithItem:centerView
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:dismissButton
attribute:NSLayoutAttributeTrailing
multiplier:1
constant:80];
NSLayoutConstraint *buttonConstraint2 = [NSLayoutConstraint constraintWithItem:dismissButton
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:centerView
attribute:NSLayoutAttributeLeading
multiplier:1
constant:80];
NSLayoutConstraint *buttonConstraint3 = [NSLayoutConstraint constraintWithItem:dismissButton
attribute:NSLayoutAttributeBottom
relatedBy:NSLayoutRelationEqual
toItem:centerView
attribute:NSLayoutAttributeBottom
multiplier:1
constant:0];
NSLayoutConstraint *buttonConstraint4 = [NSLayoutConstraint constraintWithItem:dismissButton
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:messageLabel
attribute:NSLayoutAttributeBottom
multiplier:1
constant:40];
NSLayoutConstraint *centerConstraint1 = [NSLayoutConstraint constraintWithItem:view
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationEqual
toItem:centerView
attribute:NSLayoutAttributeCenterX
multiplier:1
constant:0];
NSLayoutConstraint *centerConstraint2 = [NSLayoutConstraint constraintWithItem:view
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationEqual
toItem:centerView
attribute:NSLayoutAttributeCenterY
multiplier:1
constant:0];
NSLayoutConstraint *centerConstraint3 = [NSLayoutConstraint constraintWithItem:centerView
attribute:NSLayoutAttributeLeading
relatedBy:NSLayoutRelationEqual
toItem:view
attribute:NSLayoutAttributeLeading
multiplier:1
constant:20];
NSLayoutConstraint *centerConstraint4 = [NSLayoutConstraint constraintWithItem:view
attribute:NSLayoutAttributeTrailing
relatedBy:NSLayoutRelationEqual
toItem:centerView
attribute:NSLayoutAttributeTrailing
multiplier:1
constant:20];
NSLayoutConstraint *centerConstraint5 = [NSLayoutConstraint constraintWithItem:centerView
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationGreaterThanOrEqual
toItem:titleLabel
attribute:NSLayoutAttributeBottom
multiplier:1
constant:20];
NSLayoutConstraint *centerConstraint6 = [NSLayoutConstraint constraintWithItem:disclosureLabel
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationGreaterThanOrEqual
toItem:centerView
attribute:NSLayoutAttributeBottom
multiplier:1
constant:20];
[centerView addConstraint:messageConstraint1];
[centerView addConstraint:messageConstraint2];
[centerView addConstraint:messageConstraint3];
[centerView addConstraint:buttonConstraint1];
[centerView addConstraint:buttonConstraint2];
[centerView addConstraint:buttonConstraint3];
[centerView addConstraint:buttonConstraint4];
[[self view] addConstraint:titleConstraint1];
[[self view] addConstraint:titleConstraint2];
[[self view] addConstraint:titleConstraint3];
[[self view] addConstraint:centerConstraint1];
[[self view] addConstraint:centerConstraint2];
[[self view] addConstraint:centerConstraint3];
[[self view] addConstraint:centerConstraint4];
[[self view] addConstraint:centerConstraint5];
[[self view] addConstraint:centerConstraint6];
[[self view] addConstraint:disclosureContraint1];
[[self view] addConstraint:disclosureContraint2];
[[self view] addConstraint:disclosureContraint3];
[dismissButton addTarget:self action:@selector(dismiss:) forControlEvents:UIControlEventTouchUpInside];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment