简体   繁体   中英

Autolayout - adding and running constraint

I have a view with 2 container views: one main one on top and one at the bottom.

When the app launches, the bottom one is hidden via a frame that goes beyond the screen height. The top one in the meantime occupies the entire app window.

When I decide to show that bottom container, I want the top container to decrease in height and the view of the controller in that main container to be impacted as well.

I tried to add a constraint programmatically and used layoutIfNeeded but nothing worked.

I'm new to this. I don't necessarily want the best answer but how I should approach this.

Thanks!!!!

-(void)showBottom {
    NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:self.bottomContainer attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.mainContainer attribute:NSLayoutAttributeTop multiplier:1.0f constant:49.0f];
    [self.view addConstraint:constraint];
}

You can try pinning objects with a Top Space to Superview constraint and animating it.

// .h
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *topConstraint;

// .m
[UIView animateWithDuration:1.0 animations:^{
    self.topConstraint.constant = 0;
    [self.nView layoutIfNeeded];
}];

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM