iOS addLayer: как правильно расположить? - PullRequest
0 голосов
/ 08 марта 2019

При добавлении некоторой штриховой линии в представление 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

000

Код жестко запрограммирован и не очень хорош.

111

Я хочучтобы добавить слой вида в вид, прямо под меткой.

есть код


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, все это ноль.

Что мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...