BezierPath буквально за пределами экрана - PullRequest
0 голосов
/ 05 августа 2020

введите описание изображения здесь

как вы можете видеть, верхняя часть моего круга выступает из нижней части экрана. Мой код довольно нормальный, и я пробовал множество способов исправить это, например, создав дочернее представление в раскадровке и установив центр для родительского представления, но ничего не работает.


class ModalViewController: UIViewController {
    
    override func viewDidLoad() {
        
        super.viewDidLoad()

        let Panel = UIView()
        Panel.frame = CGRect(x: 0, y: 400, width: 400, height: 200)
        Panel.backgroundColor = UIColor.white
        
        view.backgroundColor = UIColor.clear
        modalPresentationStyle = .overCurrentContext
        view.addSubview(Panel)
        
        let shapeLayer = CAShapeLayer()
        let CircularPath = UIBezierPath(ovalIn: Panel.frame)
        shapeLayer.path = CircularPath.cgPath
        Panel.layer.addSublayer(shapeLayer)
    }```

1 Ответ

0 голосов
/ 05 августа 2020

Проблема в

let CircularPath = UIBezierPath(ovalIn: Panel.frame)

Поскольку вы пытаетесь добавить круг, закрывающий вид Panel, он должен быть

let circularPath = UIBezierPath(ovalIn: panel.bounds)

Подробнее о кадр против границ здесь

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