how to set a background image as colorWithPatternI

2019-01-30 23:33发布

My questions is, is it possible to have a UIView display an image, and if so, how so I do it? All I can find is the colorwithpatternImage which no longer works with swift.

The code I am trying to use now is:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]];  

Thanks in advance for your answers!

标签: uiview swift
6条回答
混吃等死
2楼-- · 2019-01-31 00:15

Refer to the UIColor documentation.

In Swift, you have to call a convenience initializer. This is because in Swift, all Objective-C class methods which return an instance of their class become convenience initializers.

Here's how it looks in Swift:

 self.view.backgroundColor = UIColor(patternImage: UIImage(named: "background.png"))

+ (UIColor *)colorWithPatternImage:(UIImage *)image returns a UIColor instance, so it will become a convenience initializer in Swift. Similarly, UIImage imageNamed: becomes init(patternImage image: UIImage!).

查看更多
我只想做你的唯一
3楼-- · 2019-01-31 00:17

If you are trying for layer property of an imageview, u should use something like this

userProfilePic.layer.borderColor = UIColor(patternImage:UIImage(named: "yourimg.png")!).CGColor
查看更多
戒情不戒烟
4楼-- · 2019-01-31 00:27

I prefer to this one:

let backgroundImage = UIImageView(frame: UIScreen.mainScreen().bounds)
backgroundImage.image = UIImage(named: "background.png")
self.view.insertSubview(backgroundImage, atIndex: 0)

Since setting image as backgroundColor would make it a litte blurry.

查看更多
等我变得足够好
5楼-- · 2019-01-31 00:30

You have to add optional binding for the above code to work. That is exclamation after UIImage as shown below.

view.backgroundColor = UIColor(patternImage: UIImage(named: "backgroundSection.png")!)

查看更多
爷的心禁止访问
6楼-- · 2019-01-31 00:31

Edited @User9527 's answer a bit. Not sure why it was down voted.. Worked great for me. Just added my own custom frame.

let frame = CGRectMake(10, 55, 45, 45)
let backgroundImage = UIImageView(frame: frame)
backgroundImage.image = UIImage(named: "bg_image")
self.view.insertSubview(backgroundImage, atIndex: 0)
查看更多
可以哭但决不认输i
7楼-- · 2019-01-31 00:34

This took me quite a bit of effort, capturing and passing along for reference. See below for full example of generation and use with swift.

Reference Example

Demo App

enter image description here

Code Excerpt

Here is how a UIView is textured in the demo, see code for full listing -

func genTexturedView(_ view:UIView) {
    ...
    image.image = UIImage(named:"purple_example");
    view.addSubview(image);

    print("ViewController.genTexturedView():    Textured View added");

    return;
}
查看更多
登录 后发表回答