1

Je veux définir des valeurs différentes au rayon d'angle avec effet d'ombre à UIView l'intérieur TableView Cell, comme ceci:Comment .topright mettre en coin redius avec une valeur plus élevée t à l'intérieur TableView cellule à Swift 3

 this image

Mon code est:

cell.headerView.round(corners: [.topRight], radius: 35) 

extension UIView { 
    func round(corners: UIRectCorner, radius: CGFloat) { 
     let path = UIBezierPath(roundedRect:self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius)) 
     let mask = CAShapeLayer() 
     mask.path = path.cgPath 
     self.layer.mask = mask 
     self.layoutIfNeeded()  
    } 
} 

Cela fonctionne dans l'iPhone sE Simulator, mais ne fonctionne pas pour l'iPhone 6S Simulator.

+0

Je me serais créer le chemin, et ne pas utiliser 'UIBezierPath (roundedRect: byRoundingCorners: cornerRadii:)' qui doivent appliquer le même effet de coin sur chaque coin, et j'ai trouvé étrange que cela fonctionne sur SE pas 6S alors que la méthode ne devrait pas produire l'effet que vous voulez. – Larme

+0

Je veux régler le coin supérieur droit de la vue est le plus arrondi et restant 3 sont les mêmes Corner Redis avec effet d'ombre –

Répondre

0

Swift 4

myView.clipsToBounds = true 
     myView.layer.cornerRadius = 20 
     myView.layer.maskedCorners = [.layerMaxXMaxYCorner,.layerMinXMaxYCorner,.layerMinXMinYCorner] 
0

J'ai utilisé presque la même mise en œuvre et il fonctionne très bien sur les deux appareil ainsi que le simulateur.

extension UIView 
{ 
    func roundCorners(corners: UIRectCorner, radius: CGFloat) 
    { 
     let bounds = self.bounds 
     let maskPath = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius)) 
     let maskLayer = CAShapeLayer() 
     maskLayer.frame = bounds 
     maskLayer.path = maskPath.cgPath 
     self.layer.mask = maskLayer 
    } 
} 

class CustomCell: UITableViewCell 
{ 
    @IBOutlet weak var customView: UIView! 

    override func awakeFromNib() 
    { 
     super.awakeFromNib() 
     self.customView.layer.cornerRadius = 10.0 
     self.customView.roundCorners(corners: [.topRight], radius: 35.0) 
    } 
} 

Screenshot:

enter image description here