Программное рисование пользовательской овальной формы на экране быстро - PullRequest
0 голосов
/ 07 августа 2020

Как я могу нарисовать нестандартную овальную форму, как на изображении ниже, в быстром (не SwiftUI).

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

Ответы [ 2 ]

2 голосов
/ 08 августа 2020

Я попытался клонировать подобное представление с помощью UIView и смог создать аналогичный пользовательский интерфейс, как вы указали на снимке экрана введите описание изображения здесь

А вот мой фрагмент кода

let width: CGFloat = view.frame.size.width
let height: CGFloat = view.frame.size.height

let path = UIBezierPath(roundedRect: CGRect(x: 0, y: 0, width: self.view.bounds.size.width, height: self.view.bounds.size.height), cornerRadius: 0)
let rect = CGRect(x: width / 2 - 150, y: height / 2.5 - 100, width:  300, height: 400)
let circlePath = UIBezierPath(ovalIn: rect)
path.append(circlePath)
path.usesEvenOddFillRule = true

let fillLayer = CAShapeLayer()
fillLayer.path = path.cgPath
fillLayer.fillRule = .evenOdd
fillLayer.fillColor = UIColor.red.cgColor
fillLayer.opacity = 0.5
view.layer.addSublayer(fillLayer)

Надеюсь, это вам поможет. Добрый день.

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

Вы можете нарисовать овальный путь вот так

class CustomOval: UView {

    override func drawRect(rect: CGRect) {
       var ovalPath = UIBezierPath(ovalIn: rect)
        UIColor.gray.setFill()
        ovalPath.fill()
    }
}
...