верхний правый не работает на закругленных углах в Swift 4 - PullRequest
0 голосов
/ 29 ноября 2018

я пытаюсь сделать закругленные углы для подвида в левом верхнем и правом верхнем углу, используя следующий код

 maskLayer.path = UIBezierPath(roundedRect: view.bounds, byRoundingCorners: [.topRight, .topLeft], cornerRadii: CGSize(width: 10, height: 10)).cgPath

также пробовал в viewDidLayoutSubviews (), но работает только радиус левой границы ...радиус правой границы не работает.

может кто-нибудь мне помочь

Ответы [ 3 ]

0 голосов
/ 29 ноября 2018

Вы можете пропустить настройку чего-либо, здесь maskedCorners округляется вверху слева && вправо --- и roundCorners округляется внизу слева && вправо

class ViewController: UIViewController {

    let redBox = UIView(frame: CGRect(x: 100, y: 100, width: 128, height: 128))
    let blueBox = UIView(frame: CGRect(x: 100, y: 300, width: 128, height: 128))
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.


        redBox.backgroundColor = .red
        redBox.layer.cornerRadius = 25
        redBox.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]
        view.addSubview(redBox)

        blueBox.backgroundColor = .blue
        view.addSubview(blueBox)
    }


    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
        blueBox.roundCorners(corners: [.bottomLeft, .bottomRight], radius: 25.0)
    }

}

extension UIView {
    func roundCorners(corners: UIRectCorner, radius: CGFloat) {
        let path = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
        let mask = CAShapeLayer()
        mask.path = path.cgPath
        layer.mask = mask
    }
}

enter image description here

0 голосов
/ 15 мая 2019

попробуйте

override func layoutSubviews() {
    super.layoutSubviews()

yourView.roundCorners(topLeft: 25, topRight: 25)
bookImage.clipsToBounds = true


}
0 голосов
/ 29 ноября 2018

Это часто случается, когда ваш maskLayer шире, чем вид, который он маскирует.

См. Диаграмму ниже.Перекрывающаяся область представляет собой прямоугольник с одним закругленным углом.

e

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