自定义组件背景透明

时间:2015-09-25 09:43:10

标签: ios swift

我有一个自定义组件,按照this教程完成。该组件是可重用的,我需要他的背景是透明的,但不是子视图(我有三个UIImageView,一个UIButton和一个标签。

我试过这个:

bzr-greplog

这样做,如果我将alpha设置为大于0,则背景变为紫色。但是,如果我将alpha设置为0,背景将变为白色,而不是透明(视图具有背景图像)。

有人能帮助我吗?谢谢。

编辑:

忘了说,视图上有一个UIScrollView。

编辑2:

在Main.storyboard的ViewController中:

self.view.backgroundColor = UIColor.purpleColor().colorWithAlphaComponent(0)

进一步解释,请求:

我按照之前链接的教程在他自己的xib文件中创建了一个自定义组件。

要使用它,我将View对象拖到main.storyboard,并将他的类设置为与该xib对应的swift。

因此,我有一个用于Main.storyboard的ViewController,以及一个符合我自定义组件的xib的swift文件。也就是说,两个swift文件,一个用于Main.storyboard,一个用于自定义component.xib。

我在Main.storyboard(ViewController.swift)的swift文件中设置了背景图像。如果我做任何其他事情,我有我的自定义组件,但有白色背景。所以,我想出“我需要设置背景为自定义组件(custoncomponcnt.swift)透明”

CODE: Customview.swift

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

ViewController.swift:

import UIKit

@IBDesignable class CustomView: UIView {

// Our custom view from the XIB file
var view: UIView!

@IBOutlet weak var label: UILabel!
@IBOutlet weak var icono: UIImageView!
@IBAction func onClick(sender: UIButton) {
    println("button")
}
@IBInspectable var image: UIImage? {
    get {
        return icono.image
    }
    set(image) {
        icono.image = image
    }
}

@IBInspectable var text: String? {
    get {
        return label.text
    }
    set (text){
        label.text=text
    }
}

func xibSetup() {
    view = loadViewFromNib()

    // use bounds not frame or it'll be offset
    view.frame = bounds

    // Make the view stretch with containing view
    view.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight
    //self.view.backgroundColor = UIColor.purpleColor().colorWithAlphaComponent(0)
    self.view.backgroundColor=UIColor.clearColor()
    // Adding custom subview on top of our view (over any custom drawing > see note below)
    addSubview(view)

}

func loadViewFromNib() -> UIView {

    let bundle = NSBundle(forClass: self.dynamicType)
    let nib = UINib(nibName: "CustomView", bundle: bundle)
    let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView

    return view
}
/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override func drawRect(rect: CGRect) {
    // Drawing code
}
*/

override init(frame: CGRect) {
    // 1. setup any properties here

    // 2. call super.init(frame:)
    super.init(frame: frame)

    // 3. Setup view from .xib file
    xibSetup()
}

required init(coder aDecoder: NSCoder) {
    // 1. setup any properties here

    // 2. call super.init(coder:)
    super.init(coder: aDecoder)

    // 3. Setup view from .xib file
    xibSetup()
}

}

4 个答案:

答案 0 :(得分:1)

将颜色设置为UIColor.clearColor()

答案 1 :(得分:0)

为scrollView背景使用清晰的颜色

self.scrollView.backgroundColor = UIColor.clearColor()

使用图案图像设置颜色后,您不需要再次为视图设置背景颜色。如果再次设置背景颜色,则将删除图案图像。

答案 2 :(得分:0)

作为变体,您可以使用UIWebView来使用HTML代码在HTML代码中设置透明度。

要实现具有透明背景的UIWebView,您只需要:

  1. UIWebView的backgroundColor属性设置为[UIColor clearColor]
  2. 使用HTML中的UIWebView内容。
  3. UIWebView的opaque属性设置为NO
  4. PS:摘自Using transparent background color in UIView by HTML code

答案 3 :(得分:0)

我遇到了同样的问题(同一个教程),我是如何解决的:

  1. 添加xibSetup方法:

    view.backgroundColor = UIColor(白色:0.9,alpha:1.0)//或任何颜色

  2. 在UIViewController中创建:

    让noDataView = NoDataUIView(frame:self.view。 frame

    view.addSubview(noDataView)