12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- //
- // MASExampleRemakeView.m
- // Masonry iOS Examples
- //
- // Created by Sam Symons on 2014-06-22.
- // Copyright (c) 2014 Jonas Budelmann. All rights reserved.
- //
- #import "MASExampleRemakeView.h"
- @interface MASExampleRemakeView ()
- @property (nonatomic, strong) UIButton *movingButton;
- @property (nonatomic, assign) BOOL topLeft;
- - (void)toggleButtonPosition;
- @end
- @implementation MASExampleRemakeView
- - (id)init {
- self = [super init];
- if (!self) return nil;
-
- self.movingButton = [UIButton buttonWithType:UIButtonTypeSystem];
- [self.movingButton setTitle:@"Move Me!" forState:UIControlStateNormal];
- self.movingButton.layer.borderColor = UIColor.greenColor.CGColor;
- self.movingButton.layer.borderWidth = 3;
-
- [self.movingButton addTarget:self action:@selector(toggleButtonPosition) forControlEvents:UIControlEventTouchUpInside];
- [self addSubview:self.movingButton];
-
- self.topLeft = YES;
-
- return self;
- }
- + (BOOL)requiresConstraintBasedLayout
- {
- return YES;
- }
- // this is Apple's recommended place for adding/updating constraints
- - (void)updateConstraints {
-
- [self.movingButton remakeConstraints:^(MASConstraintMaker *make) {
- make.width.equalTo(@(100));
- make.height.equalTo(@(100));
-
- if (self.topLeft) {
- make.left.equalTo(self.left).with.offset(10);
- make.top.equalTo(self.top).with.offset(10);
- }
- else {
- make.bottom.equalTo(self.bottom).with.offset(-10);
- make.right.equalTo(self.right).with.offset(-10);
- }
- }];
-
- //according to apple super should be called at end of method
- [super updateConstraints];
- }
- - (void)toggleButtonPosition {
- self.topLeft = !self.topLeft;
-
- // tell constraints they need updating
- [self setNeedsUpdateConstraints];
-
- // update constraints now so we can animate the change
- [self updateConstraintsIfNeeded];
-
- [UIView animateWithDuration:0.4 animations:^{
- [self layoutIfNeeded];
- }];
- }
- @end
|