how to set a background image as colorWithPatternImage in swift

后端 未结 7 628
心在旅途
心在旅途 2020-12-23 11:10

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

相关标签:
7条回答
  • 2020-12-23 11:49

    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

    • GitHub(jmr): Texture Reference - '0_1_TextureRef'

    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;
    }
    
    0 讨论(0)
  • 2020-12-23 11:55

    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)
    
    0 讨论(0)
  • 2020-12-23 12:00

    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!).

    0 讨论(0)
  • 2020-12-23 12:06

    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.

    0 讨论(0)
  • 2020-12-23 12:11

    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")!)

    0 讨论(0)
  • 2020-12-23 12:12

    Swift

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

    0 讨论(0)
提交回复
热议问题