我正在开发一个基于视图的应用程序,我已将背景图像设置如下。
.h文件:
UIImageView *BackgroundImage;
.m文件:
viewdidLoad方法:
BackgroundImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"BG.png"]];
[[self view] addSubview:BackgroundImage];
[BackgroundImage.superview sendSubviewToBack:BackgroundImage];
并在旋转方法上:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
BackgroundImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"BG2.png"]];
[[self view] addSubview:BackgroundImage];
[BackgroundImage.superview sendSubviewToBack:BackgroundImage];
[super viewDidLoad];
}
使用此代码我可以设置背景,但是在旋转时,第一个加载的图像不会被移除而第二个加载在第一个图像的后面,所以只有一半的图像是可见的,因为第一个图像在第二个面前。
有更好的方法吗?
OR
如何删除第一张图片然后再设置第二张图片?
请帮我解决这个问题。
答案 0 :(得分:2)
将didRotate ...方法更改为:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
[BackgroundImage removeFromSuperview];
BackgroundImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"BG2.png"]];
[[self view] addSubview:BackgroundImage];
}
注意 [BackgroundImage removeFromSuperview]; 行。我们在这里做的是每当设备旋转时,你删除旧的图像视图并添加另一个。
另请注意,变量名称应以小写字母开头,因此BackgroundImage应为backgroundImage。这是为了告诉他们除了班级的名字。
答案 1 :(得分:1)
如果你改变你的代码应该工作
BackgroundImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"BG.png"]];
[self.view addSubview:BackgroundImage];
[self.view sendSubviewToBack:BackgroundImage];
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
[BackgroundImage removeFromSuperview];
BackgroundImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"BG2.png"]];
[self.view addSubview:BackgroundImage];
[self.view sendSubviewToBack:BackgroundImage];
[super viewDidLoad];
}
答案 2 :(得分:0)
这是因为您正在再次初始化UIImageview。最好使用具有不同图像的backgroundImage的相同UIImageView。
[背景图像设置图片:[UIImage imageNamed:@“BG2.png”]];
答案 3 :(得分:0)
旋转时只需设置新图像:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
BackgroundImage.image = [UIImage imageNamed:@"BG2.png"];
}
您的代码在旋转时不断添加新的图像视图。
在iOS中如何[做东西]?
_backgroundImage
而不是BackgroundImage
。[self.view insertSubview:_backgroundImage atIndex:0];