При добавлении некоторой штриховой линии в представление viewController, добавьте подслой.
Вот код:
class ViewController: UIViewController {
@IBOutlet weak var tmpLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
tmpLabel.layer.borderColor = UIColor.red.cgColor;
tmpLabel.layer.borderWidth = 2
tmpLabel.addDashedBorders(padding: 50, y: tmpLabel.bounds.size.height * 0.5)
// ......
}}
extension UIView {
func addDashedBorders( padding x: CGFloat, y : CGFloat) {
//Create a CAShapeLayer
let shapeLayer = CAShapeLayer()
shapeLayer.strokeColor = UIColor.red.cgColor
shapeLayer.lineWidth = 2
shapeLayer.lineDashPattern = [2,3]
let path = CGMutablePath()
path.addLines(between: [CGPoint(x: x, y: y),
CGPoint(x: bounds.size.width * 0.5 - 50, y: y)])
path.addLines(between: [CGPoint(x: bounds.size.width * 0.5 + 50, y: y),
CGPoint(x: bounds.size.width - x, y: y)])
shapeLayer.path = path
layer.addSublayer(shapeLayer)
}
}
Следующее изображение в iPhoneX
Код жестко запрограммирован и не очень хорош.
Я хочучтобы добавить слой вида в вид, прямо под меткой.
есть код
class ViewController: UIViewController {
@IBOutlet weak var tmpLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
tmpLabel.layer.borderColor = UIColor.red.cgColor;
tmpLabel.layer.borderWidth = 2
view.addDashedBorder(padding: 50, y: tmpLabel.frame.origin.y)
//...
}}
extension UIView {
func addDashedBorder( padding x: CGFloat, y : CGFloat) {
let shapeLayer = CAShapeLayer()
shapeLayer.strokeColor = UIColor.red.cgColor
shapeLayer.lineWidth = 2
shapeLayer.lineDashPattern = [2,3]
let path = CGMutablePath()
path.addLines(between: [CGPoint(x: x, y: y),
CGPoint(x: bounds.size.width - x, y: y)])
shapeLayer.path = path
layer.addSublayer(shapeLayer)
}
}
Я тестировал в iPhoneX, есть расстояние.
Я пытался view.safeAreaInsets
, все это ноль.
Что мне не хватает?