我有块破iOS应用试验,以了解更多有关UI功能无法正常工作。目前,我有问题试图使其适用于屏幕旋转。的UIImageView autoresizingmask在某些情况下
我能够得到块屏幕旋转后正确地重新安排,但我有与获取的UIImageView的桨重新安排的麻烦。
我的代码被划分如下,VC调用初始化块模型类的对象。该对象存储CGRect属性(这是与桨的ImageView对应的CGRect)。
VC随后创建一个imageView,并使用paddle图像进行初始化,在图像视图上设置autoresinging属性(具有灵活的外部遮罩),根据模型对象中的CGRect设置框架并将imageView添加为子 - VC正在处理的主要观点的观点。
代码如下。
当我旋转,我看到了ImageView的没有被自动重新定位。
如果我做所有的图像查看和创建的CGRect在VC,那么它的工作原理(代码示例2)。
这是预期的行为?如果是的话,为什么如果CGRect是从另一个对象的属性中获得的,自动调整不会踢入?
完整的Xcode项目代码here(GitHub的链接)
编辑 看起来像的东西,如果我储存的ImageView作为属性不起作用。我这样做是为了快速访问它。为什么它不工作,如果imageView作为一个属性存储?
代码,其中模型初始化
self.myModel = [[BlockerModel alloc] initWithScreenWidth:self.view.bounds.size.width andHeight:self.view.bounds.size.height];
模式初始化代码
-(instancetype) initWithScreenWidth:(CGFloat)width andHeight:(CGFloat)height
{
self = [super init];
if (self)
{
self.screenWidth = width;
self.screenHeight = height;
UIImage* paddleImage = [UIImage imageNamed:@"paddle.png"];
CGSize paddleSize = [paddleImage size];
self.paddleRect = CGRectMake((self.screenWidth-paddleSize.width)/2, (1 - PADDLE_BOTTOM_OFFSET)*self.screenHeight, paddleSize.width, paddleSize.height);
}
return self;
}
在VC那里ImageView的初始化代码
self.paddleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"paddle"]];
self.paddleView.backgroundColor = [UIColor clearColor];
self.paddleView.opaque = NO;
self.paddleView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleBottomMargin;
NSLog(@"Paddle rect is %@",NSStringFromCGRect(self.myModel.paddleRect));
[self.paddleView setFrame:self.myModel.paddleRect];
[self.view addSubview:self.paddleView];
如果我改用在VC这个代码初始化ImageView的事情工作
UIImage* paddleImage = [UIImage imageNamed:@"paddle.png"];
CGSize paddleSize = [paddleImage size];
CGRect paddleRect = CGRectMake((self.view.bounds.size.width-paddleSize.width)/2, (1 - PADDLE_BOTTOM_OFFSET)*self.view.bounds.size.height, paddleSize.width, paddleSize.height);
UIImageView *paddleView = [[UIImageView alloc] initWithImage:paddleImage];
paddleView.backgroundColor = [UIColor clearColor];
paddleView.opaque = NO;
paddleView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin|UIViewAutoresizingFlexibleBottomMargin;
[paddleView setFrame:paddleRect];
[self.view addSubview:paddleView];