#import "ViewController.h"
#define TextFieldFrame CGRectMake(0, 100, 100, 30)
@interface ViewController ()
@property (nonatomic, strong) UIButton *leftButton;
@property (nonatomic, strong) UIButton *rightButton;
@property (nonatomic, strong) UITextField *textfield;
@end
@implementation ViewController
#pragma mark - life cycle
- (void)viewDidLoad{
[super viewDidLoad];
UIView *superview = self.view;
[superview addSubview:self.leftButton];
[self addLeftButtonConstraintsInView:superview];
[superview addSubview:self.rightButton];
[self addRightButtonConstraintsInView:superview];
[superview addSubview:self.textfield];
[self addTextfieldConstraintsInView:superview];
}
#pragma mark - private methods
- (void)addLeftButtonConstraintsInView:(UIView *)superview
{
NSLayoutConstraint *leftButtonXConstraint = [NSLayoutConstraint constraintWithItem:self.leftButton
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationGreaterThanOrEqual
toItem:superview
attribute:NSLayoutAttributeCenterX
multiplier:1.0
constant:-60.0f];
NSLayoutConstraint *leftButtonYConstraint = [NSLayoutConstraint constraintWithItem:self.leftButton
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationEqual
toItem:superview
attribute:NSLayoutAttributeCenterY
multiplier:1.0f
constant:0.0f];
[superview addConstraints:@[ leftButtonXConstraint,
leftButtonYConstraint]];
}
- (void)addRightButtonConstraintsInView:(UIView *)superview
{
NSLayoutConstraint *rightButtonXConstraint = [NSLayoutConstraint constraintWithItem:self.rightButton
attribute:NSLayoutAttributeCenterX
relatedBy:NSLayoutRelationGreaterThanOrEqual
toItem:superview
attribute:NSLayoutAttributeCenterX
multiplier:1.0
constant:60.0f];
rightButtonXConstraint.priority = UILayoutPriorityDefaultHigh;
NSLayoutConstraint *centerYMyConstraint = [NSLayoutConstraint constraintWithItem:self.rightButton
attribute:NSLayoutAttributeCenterY
relatedBy:NSLayoutRelationGreaterThanOrEqual
toItem:superview
attribute:NSLayoutAttributeCenterY
multiplier:1.0f
constant:0.0f];
[superview addConstraints:@[centerYMyConstraint,
rightButtonXConstraint]];
}
- (void)addTextfieldConstraintsInView:(UIView *)superview
{
NSLayoutConstraint *textFieldTopConstraint = [NSLayoutConstraint constraintWithItem:self.textfield
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationGreaterThanOrEqual
toItem:superview
attribute:NSLayoutAttributeTop
multiplier:1.0 constant:60.0f];
NSLayoutConstraint *textFieldBottomConstraint = [NSLayoutConstraint constraintWithItem:self.textfield
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationGreaterThanOrEqual
toItem:self.rightButton
attribute:NSLayoutAttributeTop
multiplier:0.8
constant:-60.0f];
NSLayoutConstraint *textFieldLeftConstraint = [NSLayoutConstraint constraintWithItem:self.textfield
attribute:NSLayoutAttributeLeft
relatedBy:NSLayoutRelationEqual
toItem:superview
attribute:NSLayoutAttributeLeft
multiplier:1.0
constant:30.0f];
NSLayoutConstraint *textFieldRightConstraint = [NSLayoutConstraint constraintWithItem:self.textfield
attribute:NSLayoutAttributeRight
relatedBy:NSLayoutRelationEqual
toItem:superview
attribute: NSLayoutAttributeRight
multiplier:1.0
constant:-30.0f];
[superview addConstraints:@[textFieldBottomConstraint,
textFieldLeftConstraint,
textFieldRightConstraint,
textFieldTopConstraint]];
}
#pragma mark - getters and setters
-(UIButton *)leftButton
{
if (!_leftButton) {
_leftButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
_leftButton.translatesAutoresizingMaskIntoConstraints = NO;
[_leftButton setTitle:@"LeftButton" forState:UIControlStateNormal];
}
return _leftButton;
}
- (UIButton *)rightButton
{
if (!_rightButton) {
_rightButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
_rightButton.translatesAutoresizingMaskIntoConstraints = NO;
[_rightButton setTitle:@"RightButton" forState:UIControlStateNormal];
}
return _rightButton;
}
- (UITextField *)textfield
{
if (!_textfield) {
_textfield = [[UITextField alloc]initWithFrame:TextFieldFrame];
_textfield.borderStyle = UITextBorderStyleRoundedRect;
_textfield.translatesAutoresizingMaskIntoConstraints = NO;
}
return _textfield;
}
@end