我尝试在我的app委托下使用此代码,以便将PNG图像添加为视图控制器的背景:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[self window] setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]];
return YES;
}
但我没有运气...视图控制器仍然有白色背景。这段代码出了什么问题?
您需要为ViewController的视图设置背景
在您的ViewController init
或viewDidLoad
中:
[self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]];
接受的答案和迈克尔的答案都可行,但正确的方法是使用UIImageView。它可以根据设备上不同的屏幕尺寸更好地控制调整大小,缩放等。这是一个例子;
首先创建一个UIImage。
UIImage *backgroundImage = [UIImage imageNamed:@"iphone_skyline3.jpg"];
第二次创建一个UIImageView。将帧大小设置为父(自)帧大小。这很重要,因为帧大小会因不同设备而异。将根据图像大小进行拉伸。接下来将图像分配给视图。
UIImageView *backgroundImageView=[[UIImageView alloc]initWithFrame:self.view.frame];
backgroundImageView.image=backgroundImage;
最后,要将图像保留在所有控件后面,请执行以下操作。如果您将图像设置为应用程序的背景,这一点很重要。
[self.view insertSubview:backgroundImageView atIndex:0];
以下是swift中的内容:
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor(patternImage: UIImage(named: "background.png"))
}
Swift 4版本的@hadaytullah回答了图像调整方面的一些改进:
override func viewDidLoad() {
super.viewDidLoad()
let backgroundImage = UIImage.init(named: "yourImageNameHere")
let backgroundImageView = UIImageView.init(frame: self.view.frame)
backgroundImageView.image = backgroundImage
backgroundImageView.contentMode = .scaleAspectFill
backgroundImageView.alpha = 0.1
self.view.insertSubview(backgroundImageView, at: 0)
}
在viewDidLoad中,我使用:
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"yourImageString.png"]];
或者,如果你想在appDelegate中这样做,我认为它可能
[self.window setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"yourImageString.png"]]];
然后在viewDidLoad中将背景设置为[UIColor clearColor]?
如果您的视图控制器具有tableView / collection视图,则以下代码将适合您。
- (void)viewDidLoad
{
[super viewDidLoad];
self.tableView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"yourImage.png"]];
}
您可以考虑以下我在swift 3.0中使用并在xcode 8中测试的解决方案
// init and image with your pattern image
var bgUIImage : UIImage = UIImage(named: "yourIamgeName")!
let myInsets : UIEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0)
bgUIImage = bgUIImage.resizableImage(withCapInsets: myInsets)
self.view.backgroundColor = UIColor.init(patternImage:bgUIImage)
结果将是以下图像
你可以从故事板中做到这一点。
添加UIImageView,只需在Attribute Inspector中为Image属性设置背景图像。
您还可以将扩展名编写到UIViewController以在多个位置使用
extension UIViewController {
func setBackgroundImage(imageName: String) {
let backgroundImage = UIImage(named: imageName)
let backgroundImageView = UIImageView(frame: self.view.frame)
backgroundImageView.image = backgroundImage
self.view.insertSubview(backgroundImageView, at: 0)
}
}