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
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
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;
}
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)
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!)
.
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.
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")!)
Swift
self.view.backgroundColor = UIColor(patternImage: UIImage(named: "YourImage.png")!)