如何制作带圆角顶角和方角底角的UIView

我试图得到一个带圆角顶角和方形底角的视图,类似于分组UITableViewCell的顶行。

任何人都知道一种简单的方法来绘制它而不是使用背景图像?

我刚才读过这篇文章:

只有两个圆角?

还有这个后续post:

UIView的两个角落

我认为这些应该回答你的问题。

iOS 11中 ,引入了一个名为CACornerMask的新结构。

使用此结构,您可以使用角落进行更改:topleft,topright,left left,right right。

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; 

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 }