我已经设置了我的背景图像,以便在使用下面的代码旋转设备时进行调整,并且它工作正常(图片在横向上拉伸,但没关系),除了它旋转时,瞬间,在重新缩放以填充视图之前,图片会重复。
-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
if (UIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation))
{
UIGraphicsBeginImageContext(self.view.frame.size);
[[UIImage imageNamed:@"MainBackground.PNG"] drawInRect:self.view.bounds];
UIImage *image=UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.view.backgroundColor=[UIColor colorWithPatternImage:image];
}
if (UIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation))
{
UIGraphicsBeginImageContext(self.view.frame.size);
[[UIImage imageNamed:@"MainBackground.PNG"] drawInRect:self.view.bounds];
UIImage *image=UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.view.backgroundColor=[UIColor colorWithPatternImage:image];
}
}
我想也许使用“willanimaterotation ..”可能会掩盖这一点,但它仍然明显令人恼火。
对所有这些都是新手,无论如何要纠正这个/我是否会完全错误?猜测我认为我可能需要一种方法来在图像旋转之前缩放图像,但我不确定如何对其进行编码或者是否可能进行编码。
目前,我个人认为修复它的唯一方法是为肖像和风景创建2个单独的图像文件,我真的不想这样做。
答案 0 :(得分:0)
UIImageView
是去这里的方式。
请注意,您在if
中使用willAnimateRotationToInterfaceOrientation
条件每次都会返回相同的结果。此外,使用这种方法是不必要的。相反,让AutoresizingMask
管理您的观看次数。
示例:
- (void)viewDidLoad
{
UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"MainBackground.PNG"]];
[imageView setAutoresizingMask: (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin)];
[self.view addSubview:imageView];
}