IB中不能设置,只好在代码中设置了。因为每次转屏时都会调用viewWillLayoutSubviews,所以在这个方法里设置就可以,具体方法是:
-(void)viewWillLayoutSubviews
{
if (constraint) {
[self.view removeConstraint:constraint];
}
if ([UIApplication sharedApplication].statusBarOrientation == UIDeviceOrientationPortrait || [UIApplication sharedApplication].statusBarOrientation == UIDeviceOrientationPortraitUpsideDown)
{
constraint = [
NSLayoutConstraint
constraintWithItem:self.view
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.backgroundImage
attribute:NSLayoutAttributeTop
multiplier:1.0f
constant:-280.0f
];
}
else
{
constraint = [
NSLayoutConstraint
constraintWithItem:self.view
attribute:NSLayoutAttributeTop
relatedBy:NSLayoutRelationEqual
toItem:self.backgroundImage
attribute:NSLayoutAttributeTop
multiplier:1.0f
constant:-200.0f
];
}
[self.view addConstraint:constraint];
}
当转屏时,就会调用这个方法,然后重新设置imageview的位置,从而达到了需求。