Как вы можете сделать UIView с закругленными верхними углами и квадратными нижними углами - PullRequest
8 голосов
/ 28 июня 2011

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

Кто-нибудь знает простой способ нарисовать его и не использовать фоновое изображение?

Ответы [ 3 ]

10 голосов
/ 28 июня 2011

Я прочитал этот пост некоторое время назад:

Всего два закругленных угла?

, а также следующий пост:

Круглые два угла в UIView

Я думаю, что они должны ответить на ваш вопрос.

5 голосов
/ 18 января 2018

С iOS 11 появилась новая структура с именем CACornerMask .

С этой структурой вы можете вносить изменения с углами: topleft, вверху справа внизу слева внизу справа.

Образец Swift :

myView.clipsToBounds = true
myView.layer.cornerRadius = 10
myView.layer.maskedCorners = [.layerMinXMinYCorner,.layerMaxXMinYCorner]

Образец Objective-C

self.view.clipsToBounds = YES;
self.view.layer.cornerRadius = 10;
self.view.layer.maskedCorners = kCALayerMaxXMaxYCorner | kCALayerMaxXMinYCorner;
4 голосов
/ 09 апреля 2018

Swift 4: для iOS 11 и выше

override func viewDidLoad() {
    super.viewDidLoad()

    if #available(iOS 11.0, *) {
        self.viewToRound.clipsToBounds = true
        viewToRound.layer.cornerRadius = 20
        viewToRound.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]
    } else {
        // Fallback on earlier versions
    }
}

Предыдущие версии iOS

override func viewDidLayoutSubviews() {
    self.viewToRound.clipsToBounds = true
    let path = UIBezierPath(roundedRect: viewToRound.bounds,
                            byRoundingCorners: [.topRight, .topLeft],
                            cornerRadii: CGSize(width: 20, height: 20))

    let maskLayer = CAShapeLayer()

    maskLayer.path = path.cgPath
    viewToRound.layer.mask = maskLayer
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...