IOS11新特性之maskedCorners

weixin_34116110發表於2018-07-09

iOS11之前,view展示圓角的處理過程為:

    self.label.layer.cornerRadius = 20;
    self.label.layer.masksToBounds = YES;

作為基礎知識點,相比大家都懂,那麼如果要你實現下圖的樣式呢?

2195474-dc72277fff885d3a.png
圖示

是不是有點麻煩,要多一些步驟?
然而,iOS11對圓角功能進行了增強,layer新增了maskedCorners屬性:

@property CACornerMask maskedCorners
  CA_AVAILABLE_STARTING (10.13, 11.0, 11.0, 4.0);

其本質是一個結構體:

typedef NS_OPTIONS (NSUInteger, CACornerMask)
{
  kCALayerMinXMinYCorner = 1U << 0,
  kCALayerMaxXMinYCorner = 1U << 1,
  kCALayerMinXMaxYCorner = 1U << 2,
  kCALayerMaxXMaxYCorner = 1U << 3,
};

這樣,我們就能使用這個新屬性,實現指定角的圓角處理:

self.label.layer.maskedCorners = kCALayerMinXMinYCorner | kCALayerMaxXMinYCorner;

切身體會到了其有用的地方,以前被UI的圖搞過,現在看到這個新特性,賊親切了~

相關文章