UIView 不会出现在模拟器中
UIView won't appear in simulator
想请教一下UIView(背景色为橙色)不显示的原因
https://imgur.com/kAtelaE 此 link 有一张显示 UIView 预览的图片。
https://imgur.com/E2xOWb7这个link的图片显示UIView不会出现在模拟器中。
下面是 ViewController 代码。我已经让 gradientLayer 的 Z 轴得到一个负数。
extension UIColor {
convenience init(hexString: String) {
let hex = hexString.trimmingCharacters(in: CharacterSet.alphanumerics.inverted)
var int = UInt32()
Scanner(string: hex).scanHexInt32(&int)
let a, r, g, b: UInt32
switch hex.count {
case 3: // RGB (12-bit)
(a, r, g, b) = (255, (int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17)
case 6: // RGB (24-bit)
(a, r, g, b) = (255, int >> 16, int >> 8 & 0xFF, int & 0xFF)
case 8: // ARGB (32-bit)
(a, r, g, b) = (int >> 24, int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF)
default:
(a, r, g, b) = (255, 0, 0, 0)
}
self.init(red: CGFloat(r) / 255, green: CGFloat(g) / 255, blue: CGFloat(b) / 255, alpha: CGFloat(a) / 255)
}
}
class ViewController: UIViewController {
@IBOutlet weak var playerView: UIView!
@IBOutlet weak var controlView: UIView!
@IBOutlet weak var controlPanel: UIView!
@IBOutlet weak var progressView: UIView!
// playerView에서 gradient background color
var gradientLayer: CAGradientLayer!
func createGradientLayer() {
gradientLayer = CAGradientLayer()
gradientLayer.frame = playerView.bounds
gradientLayer.colors = [UIColor(hexString: "#385175").cgColor, UIColor(hexString: "#36a9ba").cgColor]
gradientLayer.zPosition = -2
playerView.layer.addSublayer(gradientLayer)
}
override func viewDidLoad() {
super.viewDidLoad()
controlPanel.layer.cornerRadius = 7.0
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
createGradientLayer()
}
}
如何让 UIView 出现?
感谢阅读。
如果没有完整的项目,很难判断发生了什么,但你可以自己调试它:
在第 2 步,您需要 select 您的其中一个视图未显示。
在第 3 步,您可以看到 selected 视图的尺寸,因此您知道高度或宽度是否设置为 0(这会导致视图不可见)。
如果高度和宽度大于 0,那么您可以在 xcode 内旋转应用的渲染并查看应用的不同层。如果橙色视图是 "under" 一些其他视图,您应该在那里看到它们。
Post你查出来的,这样更容易帮助到你:)
想请教一下UIView(背景色为橙色)不显示的原因
https://imgur.com/kAtelaE 此 link 有一张显示 UIView 预览的图片。 https://imgur.com/E2xOWb7这个link的图片显示UIView不会出现在模拟器中。
下面是 ViewController 代码。我已经让 gradientLayer 的 Z 轴得到一个负数。
extension UIColor {
convenience init(hexString: String) {
let hex = hexString.trimmingCharacters(in: CharacterSet.alphanumerics.inverted)
var int = UInt32()
Scanner(string: hex).scanHexInt32(&int)
let a, r, g, b: UInt32
switch hex.count {
case 3: // RGB (12-bit)
(a, r, g, b) = (255, (int >> 8) * 17, (int >> 4 & 0xF) * 17, (int & 0xF) * 17)
case 6: // RGB (24-bit)
(a, r, g, b) = (255, int >> 16, int >> 8 & 0xFF, int & 0xFF)
case 8: // ARGB (32-bit)
(a, r, g, b) = (int >> 24, int >> 16 & 0xFF, int >> 8 & 0xFF, int & 0xFF)
default:
(a, r, g, b) = (255, 0, 0, 0)
}
self.init(red: CGFloat(r) / 255, green: CGFloat(g) / 255, blue: CGFloat(b) / 255, alpha: CGFloat(a) / 255)
}
}
class ViewController: UIViewController {
@IBOutlet weak var playerView: UIView!
@IBOutlet weak var controlView: UIView!
@IBOutlet weak var controlPanel: UIView!
@IBOutlet weak var progressView: UIView!
// playerView에서 gradient background color
var gradientLayer: CAGradientLayer!
func createGradientLayer() {
gradientLayer = CAGradientLayer()
gradientLayer.frame = playerView.bounds
gradientLayer.colors = [UIColor(hexString: "#385175").cgColor, UIColor(hexString: "#36a9ba").cgColor]
gradientLayer.zPosition = -2
playerView.layer.addSublayer(gradientLayer)
}
override func viewDidLoad() {
super.viewDidLoad()
controlPanel.layer.cornerRadius = 7.0
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
createGradientLayer()
}
}
如何让 UIView 出现? 感谢阅读。
如果没有完整的项目,很难判断发生了什么,但你可以自己调试它:
在第 2 步,您需要 select 您的其中一个视图未显示。 在第 3 步,您可以看到 selected 视图的尺寸,因此您知道高度或宽度是否设置为 0(这会导致视图不可见)。
如果高度和宽度大于 0,那么您可以在 xcode 内旋转应用的渲染并查看应用的不同层。如果橙色视图是 "under" 一些其他视图,您应该在那里看到它们。
Post你查出来的,这样更容易帮助到你:)