
我想創建一個帶有線角的形狀的 UIView。我怎樣才能用 UIBezierPath 繪制它,或者有更簡單的方法嗎?任何幫助將不勝感激!
uj5u.com熱心網友回復:
是的,您可能應該創建一條繪制該形狀的路徑。
可能最高效的處理器方法是將 CAShapeLayer 作為子圖層安裝到視圖中,并將路徑安裝到形狀圖層的路徑屬性中。考慮以下游樂場:
import UIKit
import PlaygroundSupport
class MyViewController : UIViewController {
let shapeLayer = CAShapeLayer()
let dogEarValue: CGFloat = 40.0
func buildShape() {
let box = view.bounds
shapeLayer.frame = box
let path = UIBezierPath()
path.move(to: box.origin)
path.addLine(to: CGPoint(x:box.maxX, y: box.origin.y))
path.addLine(to: CGPoint(x:box.maxX, y: box.maxY - dogEarValue))
path.addLine(to: CGPoint(x:box.maxX - dogEarValue, y: box.maxY))
path.addLine(to: CGPoint(x:box.origin.x dogEarValue, y: box.maxY))
path.addLine(to: CGPoint(x:box.origin.x, y: box.maxY - dogEarValue))
path.close()
shapeLayer.path = path.cgPath
}
override func loadView() {
let view = UIView()
view.backgroundColor = .white
shapeLayer.fillColor = UIColor.black.cgColor
shapeLayer.backgroundColor = UIColor.clear.cgColor
view.layer.addSublayer(shapeLayer)
let label = UILabel()
label.text = "Hello World"
label.frame = CGRect(x: 150, y: 200, width: 200, height: 20)
label.text = "Hello World!"
label.textColor = .black
view.addSubview(label)
self.view = view
}
override func viewDidLayoutSubviews() {
buildShape()
}
}
// Present the view controller in the Live View window
PlaygroundPage.current.liveView = MyViewController()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/393994.html
