ios怎麼讓圖片只有上半邊圓角?
就醬,開發一直搞不定網上也搜不到╮(╯▽╰)╭難道真的不能像css一樣隨意設置四個角弧度的嗎
四個角都圓角不用說,直接設置cornerRadius和maskToBounds如果只是上面兩個角圓角的話,那就畫
CGContextRef context = UIGraphicsGetCurrentContext();
UIImage *your_image = [UIImage imageNamed: @"your_image_name"];
UIBezierPath *rectanglePath = [UIBezierPath bezierPathWithRoundedRect: CGRectMake(100, 100, 100, 100) byRoundingCorners: UIRectCornerTopLeft | UIRectCornerTopRight cornerRadii: CGSizeMake(5, 5)];
[rectanglePath closePath];
CGContextSaveGState(context);
[rectanglePath addClip];
[your_image drawInRect: CGRectMake(100, 100, your_image.size.width, your_image.size.height)];
CGContextRestoreGState(context);
你覺得不爽,你可以自己封裝嘛
當然也可以如樓上所說,用一些取巧的辦法。可以使用UIBezierPath的
+ (UIBezierPath *)bezierPathWithRoundedRect:(CGRect)rect
byRoundingCorners:(UIRectCorner)corners
cornerRadii:(CGSize)cornerRadii
參數corners指定了想要需要成為圓角的角。可選值為:
enum {
UIRectCornerTopLeft = 1 &<&< 0,
UIRectCornerTopRight = 1 &<&< 1,
UIRectCornerBottomLeft = 1 &<&< 2,
UIRectCornerBottomRight = 1 &<&< 3,
UIRectCornerAllCorners = ~0
};
typedef NSUInteger UIRectCorner;
從名字就能看出來其代表的意義。
例子:UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(120, 10, 80, 80)];
view2.backgroundColor = [UIColor redColor];
[self.view addSubview:view2];
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:view2.bounds byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(10, 10)];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = view2.bounds;
maskLayer.path = maskPath.CGPath;
view2.layer.mask = maskLayer;
如果需要將UIView的4個角全部都為圓角,做法相當簡單,只需設置其Layer的cornerRadius屬性即可。
兩種方法,
1,首先,稍微專業點的,畫路徑,然後設置層
2,障眼法,將你要倒圓角的view,四個角全部倒,然後用一個更大的透明的view包含它,上左右內邊距不小於0,但是下邊距小於0,且距離的絕對值大於倒角半徑,然後設置clipstobounds,或者masktobounds為yes利用貝塞爾曲線和CAShapeLayer結合就可以實現;
//貝塞爾曲線設置
+ (UIBezierPath *)bezierPathWithRoundedRect:(CGRect)rect byRoundingCorners:(UIRectCorner)corners cornerRadii:(CGSize)cornerRadii;UIRectCorner:
typedef NS_OPTIONS(NSUInteger, UIRectCorner) { UIRectCornerTopLeft = 1 &<&< 0, UIRectCornerTopRight = 1 &<&< 1,UIRectCornerBottomLeft = 1 &<&< 2,
UIRectCornerBottomRight = 1 &<&< 3, UIRectCornerAllCorners = ~0UL};選擇其中的UIRectCornerTopLeft |UIRectCornerTopRight 就ok啦~你們的開發不用stackoverflow的么。。趕緊辭了吧。。
Swift下 報錯了...
推薦閱讀:
※能簡單地用「扁平化」來描述 iOS 7 在設計風格上的變化嗎?
※安裝 iOS 7 的設備,具備 iCloud 網路鎖,失竊之後會被怎麼處理?
※認為 iOS 7 是錯誤設計方向的理由是什麼?
※iOS 7 的 Alert Views 按鈕(確認和取消)布局改變了嗎?
TAG:iOS | iOS開發 | 計算機科學 | Objective-C | iOS7 |