- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
return YES;
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
[self positionViews];
}
-(void)positionViews {
UIInterfaceOrientation destOrientation = self.interfaceOrientation;
if (destOrientation == UIInterfaceOrientationPortrait ||
destOrientation == UIInterfaceOrientationPortraitUpsideDown) {
[bLabel setFrame:CGRectMake(255, 10, 270, 60)];
} else {
[bLabel setFrame:CGRectMake(377, 10, 270, 60)];
}
}
bLabel
是Cutomed Object。
当IPad(设备)旋转时,bLable
会旋转。
但出现时间滞后。
所以旋转运动不顺畅。
我的代码有什么缺点? 如何自然地控制对象的自动调整?
请告诉我你的建议。谢谢!!!
答案 0 :(得分:6)
您在视图中查找的属性是autoresizingMask.Set就像在IB中一样。以下是可用的值:
UIViewAutoresizing
Specifies how a view is automatically resized.
enum {
UIViewAutoresizingNone = 0,
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,
UIViewAutoresizingFlexibleWidth = 1 << 1,
UIViewAutoresizingFlexibleRightMargin = 1 << 2,
UIViewAutoresizingFlexibleTopMargin = 1 << 3,
UIViewAutoresizingFlexibleHeight = 1 << 4,
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
例如,如果您想要灵活的宽度和高度以及固定边距,您可以这样做:
[myView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoResizingFlexibleWidth;][1]
答案 1 :(得分:2)
你可以:
设置你的UIView的autoresizingMask,如果可以的话 自动调整大小。
bLabel.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin;
如果两个设备方向之间的布局太不相同,您还可以在旋转动画期间调用的UIViewController方法willAnimateRotationToInterfaceOrientation:duration:
中更改视图,而不是使用调用的didRotateFromInterfaceOrientation:
在动画交易之后。
您在willAnimateRotationToInterfaceOrientation:duration:
的视图'动画属性(frame,bounds,center,transform,alpha,backgroundColor,contentStretch)上调用的任何更改也将在轮播期间进行动画处理。< / p>