旋转时更改子视图框架

我在我的基本视图控制器中添加子视图(backgroundView)在我的基本视图控制器中它的工作很好,但是当我从potraite更改方向从景观它的框架大小是相同的potrait我想在旋转时更改子视图的大小。

UIView *activityView = [[UIView alloc] initWithFrame:self.view.bounds]; CGRect frame = activityView.frame; activityView.frame = frame; activityView.backgroundColor = [UIColor clearColor]; activityView.alpha = 0.0f; [self.view addSubview:activityView]; self.activityView = activityView; UIView *backgroundView = [[UIView alloc]initWithFrame:activityView.bounds]; backgroundView.alpha = 0.0f; [backgroundView setBackgroundColor:[UIColor lightGrayColor]]; [self.activityView backgroundView]; UIActivityIndicatorView *spinning = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]; [self.activityView spinning]; spinning.center = activityView.center; self.activityView.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleBottomMargin; [spinning setColor:[UIColor lightGrayColor]]; [spinning startAnimating]; 

要做到这一点,你必须添加约束到你的视图(AutoLayout)。

例如 :

 [self.view addConstraint:[NSLayoutConstraint constraintWithItem:containerView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTop multiplier:1.0 constant:0.0]]; [self.view addConstraint:[NSLayoutConstraint constraintWithItem:containerView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeLeading multiplier:1.0 constant:0.0]]; [self.view addConstraint:[NSLayoutConstraint constraintWithItem:containerView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeBottom multiplier:1.0 constant:0.0]]; [self.view addConstraint:[NSLayoutConstraint constraintWithItem:containerView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:self.view attribute:NSLayoutAttributeTrailing multiplier:1.0 constant:0.0]]; 

编辑:

不要忘记在视图上设置translatesAutoresizingMaskIntoConstraints属性为NO

(用您的视图replaceself.viewcontainerView )。