我正在尝试创建在某些位置透明的视图以查看后面的图像。但是,由于某种原因,在视图的透明部分中,我看到的是黑色,而不是视图的后面。我已经将其精简为很少的代码,并且不明白为什么我的透明视图显示的是黑色而不是红色(后面的视图的颜色)。这是我的代码:
class ViewController: UIViewController {
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let redView = UIView(frame: view.frame)
redView.backgroundColor = UIColor.red
let transparentView = TransparentView(frame: view.frame)
view.addSubview(redView)
view.addSubview(transparentView)
}
}
Run Code Online (Sandbox Code Playgroud)
class TransparentView: UIView {
override func draw(_ rect: CGRect) {
UIColor.clear.setFill()
UIRectFill(rect)
}
Run Code Online (Sandbox Code Playgroud)
我希望屏幕显示为全红,但显示为全黑。在有人说清楚视图变得容易得多之前,我实际上是在尝试在drawRect中做更复杂的事情,只是深入到最基本的事情来尝试调试我的问题。我在这里想念什么?
使用self.isOpaque = false;以使视图/层透明即使当drawRect被覆盖。
class TransparentView: UIView {
override init(frame: CGRect) {
super.init(frame: frame);
self.isOpaque = false; //Use this..
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func draw(_ rect: CGRect) {
UIColor.clear.setFill()
UIRectFill(rect)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
559 次 |
| 最近记录: |