这是期望的结果。蓝色区域是感兴趣的 UIView。UIView 不是 UIImageView。
我尝试了各种带有自动调整大小的蒙版的安排,但无济于事
这是期望的结果。蓝色区域是感兴趣的 UIView。UIView 不是 UIImageView。
我尝试了各种带有自动调整大小的蒙版的安排,但无济于事
处理不同的屏幕尺寸可能很棘手。在你的情况下它不是:) 因为你想在屏幕上居中视图的大小,你需要做的就是将视图的中心设置为屏幕的中心。
CGRect screenBounds = [[UIScreen mainScreen] bounds];
view.center = CGPointMake(screenBounds.size.width/2,screenBounds.size.height/2);
此代码假定视图的 superView 的边界与 screenBounds 的大小相同。
这只能以编程方式完成。一种选择是@user2223761 建议的子类化。如果您不想继承 UIView,那么您需要在方向更改时设置框架并将 yourView.center 设置为中心的中心。
- (void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration {
if (UIInterfaceOrientationIsLandscape(interfaceOrientation)) {
// Make sure that the frame is centered in the screen
NSInteger paddingLeftSide = (self.view.bounds.size.width - 480) / 2;
self.view.frame = CGRectMake(paddingLeftSide, 0, 480, 320);
} else {
self.view.frame = CGRectMake(0, 0, 320, 320);
}
}
第一:子类 UIView(创建一个 MYUIView)。二:覆盖方法
- (void)layoutSubviews {
[super layoutSubviews];
// .. put your code...
}
并通过读取屏幕尺寸在该方法内手动执行帧更新。自动调整大小掩码必须设置为 UIViewAutoresizingNone。