我有一个自定义组件,按照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()
}
}
答案 0 :(得分:1)
将颜色设置为UIColor.clearColor()
答案 1 :(得分:0)
为scrollView背景使用清晰的颜色
self.scrollView.backgroundColor = UIColor.clearColor()
使用图案图像设置颜色后,您不需要再次为视图设置背景颜色。如果再次设置背景颜色,则将删除图案图像。
答案 2 :(得分:0)
作为变体,您可以使用UIWebView
来使用HTML代码在HTML代码中设置透明度。
要实现具有透明背景的UIWebView,您只需要:
UIWebView
的backgroundColor属性设置为[UIColor clearColor]
。UIWebView
内容。UIWebView
的opaque属性设置为NO
。PS:摘自Using transparent background color in UIView by HTML code
答案 3 :(得分:0)
我遇到了同样的问题(同一个教程),我是如何解决的:
添加xibSetup方法:
view.backgroundColor = UIColor(白色:0.9,alpha:1.0)//或任何颜色
在UIViewController中创建:
让noDataView = NoDataUIView(frame:self.view。 frame )
view.addSubview(noDataView)