Как динамически создавать различные значения закругленных углов в UIView в iOS? - PullRequest
1 голос
/ 07 июня 2019

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

View1: topLeft: 12, bottomLeft: 12, topRight: 4, bottomRight: 4

View2: topLeft: 4, bottomLeft: 4, topRight: 12, bottomRight: 12

View3: topLeft: 4, bottomLeft: 12, topRight: 4, bottomRight: 4

Пример кода:

extension UIView{

     enum Corner:Int {
        case bottomRight = 0,
        topRight,
        bottomLeft,
        topLeft
    }

    private func parseCorner(corner: Corner) -> CACornerMask.Element {
        let corners: [CACornerMask.Element] = [.layerMaxXMaxYCorner, .layerMaxXMinYCorner, .layerMinXMaxYCorner, .layerMinXMinYCorner]
        return corners[corner.rawValue]
    }

    private func createMask(corners: [Corner]) -> UInt {
        return corners.reduce(0, { (a, b) -> UInt in
            return a + parseCorner(corner: b).rawValue
        })
    }

    func roundCorners(corners: [Corner], amount: CGFloat) {
        layer.cornerRadius = amount
        let maskedCorners: CACornerMask = CACornerMask(rawValue: createMask(corners: corners))
        if #available(iOS 11.0, *) {
            layer.maskedCorners = maskedCorners
        } else {
            // Fallback on earlier versions
            layer.cornerRadius = 8 // Setting static values for the below versions
        }
    }
}

cardView.roundCorners(corners: [.topRight, .bottomRight], amount: 12).

Я хочу передать массив значений угла вместо одного значения.ожидая, чтобы пройти как этот коэффициент: [12,4,12,4].

1 Ответ

0 голосов
/ 07 июня 2019

Как много сделать вместо этого структуру.

struct CornerRadius {
    var topLeft: CGFloat = 0
    var topRight: CGFloat = 0
    var bottomLeft: CGFloat = 0
    var bottomRight: CGFloat = 0

    init(_ topLeft: CGFloat, _ topRight: CGFloat, _ bottomLeft: CGFloat, _ bottomRight: CGFloat) {
        self.topLeft = topLeft
        self.topRight = topRight
        self.bottomLeft = bottomLeft
        self.bottomRight = bottomRight
    }
}

let radius = CornerRadius(0, 8, 10, 11)

Я не уверен, что это тот ответ, который вам нужен.

Надеется, что это может вам помочь.

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