如何在左上角圆角&x2B;iOS 9的右上角

如何在左上角圆角&x2B;iOS 9的右上角,ios,swift,Ios,Swift,我试图绕过左上角,但知道如何在iOS 11+上做到这一点(这是最简单的新功能),但在iOS 9上做不到这一点,如果你们能帮我的话可能会很酷:) 这是一张没有圆角的图像- 例如,对于iOS 11+,我是这样做的- layer.maskedCorners = [ .layerMinXMaxYCorner, .layerMaxXMaxYCorner ] layer.cornerCurve = .continuous 编写此方法并将其放在需要的任何位置,例如在viewDidLoad中: pr

我试图绕过左上角,但知道如何在iOS 11+上做到这一点(这是最简单的新功能),但在iOS 9上做不到这一点,如果你们能帮我的话可能会很酷:)

这是一张没有圆角的图像-

例如,对于iOS 11+,我是这样做的-

layer.maskedCorners = [
  .layerMinXMaxYCorner,
  .layerMaxXMaxYCorner
]
layer.cornerCurve = .continuous

编写此方法并将其放在需要的任何位置,例如在viewDidLoad中:

private let cornerRadius: CGFloat = 10
private func setMaskLayers() {
        if #available(iOS 11.0, *) {
        yourView.clipsToBounds = true
        yourView.layer.cornerRadius = cornerRadius
        yourView.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]
    } else {
    let path = UIBezierPath(roundedRect: yourView.bounds, byRoundingCorners: [.topRight, .topLeft], cornerRadii: CGSize(width: cornerRadius, height: cornerRadius))
    let maskLayer = CAShapeLayer()
    maskLayer.path = path.cgPath
    yourView.layer.mask = maskLayer
    } 
}

编写此方法并将其放在需要的任何位置,例如在viewDidLoad中:

private let cornerRadius: CGFloat = 10
private func setMaskLayers() {
        if #available(iOS 11.0, *) {
        yourView.clipsToBounds = true
        yourView.layer.cornerRadius = cornerRadius
        yourView.layer.maskedCorners = [.layerMinXMinYCorner, .layerMaxXMinYCorner]
    } else {
    let path = UIBezierPath(roundedRect: yourView.bounds, byRoundingCorners: [.topRight, .topLeft], cornerRadii: CGSize(width: cornerRadius, height: cornerRadius))
    let maskLayer = CAShapeLayer()
    maskLayer.path = path.cgPath
    yourView.layer.mask = maskLayer
    } 
}

创建UIView扩展并在其中添加以下方法:

extension UIView {
    
    func roundCorners(corners: UIRectCorner, radius: CGFloat) {
        DispatchQueue.main.async {
            let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
            let mask = CAShapeLayer()
            mask.frame = self.bounds
            mask.path = path.cgPath
            self.layer.mask = mask
        }
    }
}
然后你们可以从任意侧面,使任意视图的圆角半径变圆。 例如:


注意:在使用此方法之前,不要忘记将视图的clipsToBounds属性设置为true。快乐编码:)进行UIView扩展,并在其中添加以下方法:

extension UIView {
    
    func roundCorners(corners: UIRectCorner, radius: CGFloat) {
        DispatchQueue.main.async {
            let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
            let mask = CAShapeLayer()
            mask.frame = self.bounds
            mask.path = path.cgPath
            self.layer.mask = mask
        }
    }
}
然后你们可以从任意侧面,使任意视图的圆角半径变圆。 例如:



注意:在使用此方法之前,不要忘记将视图的clipsToBounds属性设置为true。快乐编码:)

您也看到了,但没有工作:\n现在检查,我编辑了一点。您的视图必须替换为您的视图对象您也这样做了:\idk为什么它不起作用,我将它应用到布局子视图中编辑您的问题并显示您的代码在哪里调用iOS11+工作代码。您也看到了它,但不起作用:\check now,我编辑了一点。您的视图必须替换为您的视图对象您也这样做了:\idk为什么它不起作用,我将它应用到布局子视图中编辑您的问题并显示您的代码在哪里调用您的iOS11+工作代码。您是如何为iOS11+执行此操作的?您应该能够使用仅在左上角和右上角添加一个角半径,然后应用遮罩。@Larme for iOS 11+我是这样做的-layer.maskedCorners=[.layerMinXMaxYCorner,.layermaxycorner]layer.cornerCurve=.continuous您是如何为iOS11+做的?您应该能够使用仅在左上角和右上角添加一个角半径,然后应用遮罩。@Larme for iOS 11+我这样做-layer.maskedCorners=[.layerMinXMaxYCorner,.layermaxycorner]layer.cornerCurve=.Continuous不幸的是,它是相同的:\n角不是圆角:\n我使用了相同的,它对我有效。你是否在@AviavSabag上删减了你的观点范围?我没有将剪贴簿设置为真:D我的错,非常感谢!请注意安全。不幸的是,它是一样的:\拐角不是圆的:\我用过同样的,它对我有用。你是否在@AviavSabag上删减了你的观点范围?我没有将剪贴簿设置为真:D我的错,非常感谢!保持安全