Изменение размера UIView с ограничениями - PullRequest
0 голосов
/ 23 февраля 2020

У меня есть UIView (350x350) с классом, в котором я создаю круг в середине представления (x: frame.width/2, y: frame.height/2). Теперь я хочу, чтобы UIView было меньше на меньших устройствах. Я использую ограничения раскадровки для этого. Вид становится меньше, но круг все еще использует 350px для вычисления центра.

enter image description here

enter image description here

Вот как я создаю круг:

fileprivate func loadBgProgressBar() {

        let startAngle = CGFloat(-Double.pi / 2)
        let endAngle = CGFloat(3 * Double.pi / 2)
        let centerPoint = CGPoint(x: frame.width/2 , y: frame.height/2)

        let gradientMaskLayer = gradientMaskBg()
        bgProgressLayer.path = UIBezierPath(arcCenter:centerPoint, radius: frame.width/2 - 10.0, startAngle:startAngle, endAngle:endAngle, clockwise: true).cgPath
        bgProgressLayer.backgroundColor = UIColor.clear.cgColor
        bgProgressLayer.fillColor = nil
        bgProgressLayer.strokeColor = UIColor.black.cgColor
        bgProgressLayer.lineWidth = 4.0
        bgProgressLayer.strokeStart = 0.0
        bgProgressLayer.strokeEnd = 1.0

        gradientMaskLayer.mask = bgProgressLayer
        layer.addSublayer(gradientMaskLayer)
    }


    fileprivate func gradientMaskBg() -> CAGradientLayer {
        let gradientLayer = CAGradientLayer()
        gradientLayer.frame = bounds
        gradientLayer.locations = [0.0, 1.0]
        let colorTop: AnyObject = CustomColor.flipside.cgColor
        let colorBottom: AnyObject = CustomColor.flipside.cgColor
        let arrayOfColors: [AnyObject] = [colorTop, colorBottom]
        gradientLayer.colors = arrayOfColors

        return gradientLayer
    }

1 Ответ

0 голосов
/ 23 февраля 2020

Используйте viewDidLayoutSubviews для изменения размера вашего слоя,

    override func viewDidLayoutSubviews() {
     super.viewDidLayoutSubviews()
     layer.frame = CGRect(x: view.bounds.width/2, y: view.bounds.height/2, view.bounds.width - 10, view.bounds.height-10)
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...