Because the autolayout of ios fixes the position of the control on the screen, after the control is hidden, the control behind it will not top the vacant position.
Idea: Redraw the picture.
//hide button [_signupButton setHidden:YES]; //move up loginLink label CGFloat signupButton_y = _signupButton.frame.origin.y; CGFloat loginLink_x = _loginLink.frame.origin.x; CGFloat loginLink_width = _loginLink.frame.size.width; CGFloat loginLink_heitht = _loginLink.frame.size.height; _loginLink.frame = CGRectMake(loginLink_x, signupButton_y, loginLink_width, loginLink_heitht);