如何在iOS中正确设置背景图像

时间:2014-03-05 14:29:32

标签: ios iphone objective-c ipad uiimageview

我正在开发一个基于视图的应用程序,我已将背景图像设置如下。

.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

如何删除第一张图片然后再设置第二张图片?

请帮我解决这个问题。

4 个答案:

答案 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中如何[做东西]?

  • 使用下划线和小写字母开始您的ivar名称:_backgroundImage而不是BackgroundImage
  • 在正确的位置插入子视图:[self.view insertSubview:_backgroundImage atIndex:0];