Ios 不重复地设置图像背景

Ios 不重复地设置图像背景,ios,objective-c,cocoa-touch,Ios,Objective C,Cocoa Touch,我已将我的背景设置为具有 self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:[self.Images objectAtIndex:arc4random_uniform(4) ]]]; 这立即起作用,实际上背景在两幅图像之间发生了变化。。。直到我改变了保存图像的数组中的某些内容。然后突然,图像在整个背景上以平铺的形式重复 是什么导致了这样的情况?colorWithPatternImage:

我已将我的背景设置为具有

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:[self.Images objectAtIndex:arc4random_uniform(4) ]]];
这立即起作用,实际上背景在两幅图像之间发生了变化。。。直到我改变了保存图像的数组中的某些内容。然后突然,图像在整个背景上以平铺的形式重复


是什么导致了这样的情况?

colorWithPatternImage:
是这里的关键,您可以使用图像创建图案,而不是作为背景。正如洛根所解释的,你需要重新思考你的背景设置。如果您想从随机图像设置背景,可能会发布一个关于如何设置背景的新问题

这里有一些可以解决您问题的方法,您可以将其放入
viewDidLoad

UIImageView * bgImageView = [[UIImageView alloc]init];
bgImageView.frame = self.view.bounds;
bgImageView.contentMode = UIViewContentModeScaleAspectFit;
bgImageView.image = [UIImage imageNamed:[self.Images objectAtIndex:arc4random_uniform(4)]];
self.view = bgImageView;
您可以稍后通过执行以下操作来更改/访问它:

UIImageView *bgImageView = (UIImageView *)self.view;
bgImageView.image = [UIImage imageNamed:[self.Images objectAtIndex:arc4random_uniform(4)]];

我最终得到了以下解决方案:

1) 在interface builder中创建UIImageView并将其拖出以填充整个屏幕

2) 使用以下命令设置imageView的内容:

imageView.image = [UIImage imageNamed:@"Themes.png"];
或者,如果使用数组:

imageView.image = [UIImage imageNamed:self.myArray[x]];

其中“x”当然是数组中元素的编号-1(0索引)

这就是它的设计用途。它的设计目的是创建填充整个区域的图案,以便您可以将小瓷砖转换为整体纹理。如果你正在寻找全屏背景,也许使用imageView作为背景视图是一个更好的选择。两个惊奇:a)无法“关闭”重复/模式?b) 我用不同的图像运行了多次,它们是fullscreena。不,我很确定他们认为如果你不想要这个模式,你会使用imageView。B这取决于图像的大小。如果图像的大小是屏幕的大小,它将填充该区域。这可能会随着图像和屏幕的变化而变化。对于3.5英寸和4英寸的iphone6,你必须使用不同的图像,而对于不可避免的更大的iphone6,你必须使用三分之一的图像。起初,我只是看到了很多代码,我希望这些代码可以在几乎一行中完成。现在我想我明白了背后的大部分逻辑。当我模拟时,屏幕变黑并显示“由于缺少入口点,无法访问场景,并且没有运行时访问的标识符。”。我会尝试四处搜索,但目前我对什么是错的没有太多线索我不确定我是否理解你的意思?我尝试过使用上面的代码,在故事板中添加了一个imageView,并将其添加到头文件中。现在,当我模拟代码时,屏幕变黑了。你不需要添加任何东西来使用它。当然!应该意识到,当第一行创建imageView时。虽然还没有通过黑屏,但我得到了“输出文件的多个构建命令”,但我有一些谷歌点击。。也许我会自己解决这个问题