Setting masked angles in Interface Builder

What type of value [.layerMaxXMinYCorner, .layerMinXMinYCorner]? Is it possible to set this parameter in the view in the interface builder? I know how to set layer.borderWidth, layer.borderUIColorand layer.cornerRadiusin the Identity Inspector, but I can not determine the correct type and value for masked angles.

Thank!

Jake


Update: here are the integer values ​​for each combination (in terms of which are rounded):

  • 0: no rounded corners
  • 1: upper left
  • 2: upper right
  • 3: upper left and right (both upper corners)
  • 4: bottom left
  • 5: upper and lower left (both left corners)
  • 6: upper right and lower left
  • 7: , ( , ).
  • 8:
  • 9: ,
  • 10: ( )
  • 11: , ( , ).
  • 12: ( )
  • 13: , ( , ).
  • 14: , ( , ).
  • 15:

  • 1, 3, 5, 7, 9, 11, 13, 15
  • 2-3, 6-7, 10-11, 14-15
  • 4-7, 12-15
  • 8-15

  • 3, 7, 11, 15

  • 10-11, 14,15
  • 12-15
  • 5, 7, 13, 15
+6
2

maskedCorners - CACornerMask, OptionSet . : someView.layer.maskedCorners.rawValue someView.layer.maskedCorners.setValue(3, forKey: "maskedCorners").

, layer.maskedCorners 3 ( , ) Interface Builder, , . , , , , .

+3

, , c:

( 🌚)

@IBDesignable
class ViewController: UIViewController {
    // Preprocessor macro, you won't be able 
    // to use code inside this "if" statement from your... code
    // Just use cornerMask property directly
    #if TARGET_INTERFACE_BUILDER
    @IBInspectable
    var topLeft: Bool = false {
        didSet {
            updateCornerMask()
        }
    }

    @IBInspectable
    var topRight: Bool = false {
        didSet {
            updateCornerMask()
        }
    }

    @IBInspectable
    var bottomLeft: Bool = false {
        didSet {
            updateCornerMask()
        }
    }

    @IBInspectable
    var bottomRight: Bool = false {
        didSet {
            updateCornerMask()
        }
    }

    func updateCornerMask() {
        cornerMask = CACornerMask(
            TL: topLeft,
            TR: topRight,
            BL: bottomLeft,
            BR: bottomRight)
    }
    #endif

    var cornerMask: CACornerMask?
}

extension CACornerMask {
    init(TL: Bool = false, TR: Bool = false, BL: Bool = false, BR: Bool = false) {
        var value: UInt = 0
        if TL { value += 1 }
        if TR { value += 2 }
        if BL { value += 4 }
        if BR { value += 8 }

        self.init(rawValue: value)
    }
}

// And yeah maybe using UIView makes more sense 🙃
0

Source: https://habr.com/ru/post/1690396/


All Articles