如何为UIView的左上角和右上角设置角半径?有没有办法cornerRadius的左上角和右上角UIView?我试过以下几种方法,但最后都看不到风景了。UIView *view = [[UIView alloc] initWithFrame:frame];CALayer *layer = [CALayer layer];UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRoundedRect:frame byRoundingCorners:(UIRectCornerTopLeft|UIRectCornerTopRight) cornerRadii:CGSizeMake(3.0, 3.0)];layer.shadowPath = shadowPath.CGPath;view.layer.mask = layer;
3 回答
森林海
TA贡献2011条经验 获得超2个赞
SWIFT 4
override func layoutSubviews() {
super.layoutSubviews()
roundCorners(corners: [.topLeft, .topRight], radius: 3.0)}extension UIView {
func roundCorners(corners: UIRectCorner, radius: CGFloat) {
let path = UIBezierPath(roundedRect: bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
let mask = CAShapeLayer()
mask.path = path.cgPath
layer.mask = mask }}
收到一只叮咚
TA贡献1821条经验 获得超5个赞
我不知道为什么您的解决方案不起作用,但下面的代码对我有用。创建一个Bezier掩码并将其应用到您的视图中。在下面的代码中,我正在舍入_backgroundView半径为3像素。self是一种习俗UITableViewCell:
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.backgroundImageView.bounds byRoundingCorners:(UIRectCornerBottomLeft | UIRectCornerBottomRight) cornerRadii:CGSizeMake(20, 20)];CAShapeLayer *maskLayer = [CAShapeLayer layer];maskLayer.frame = self.bounds;maskLayer.path = maskPath.CGPath;self.backgroundImageView.layer.mask = maskLayer;
有一些改进的SWIFT版本:
let path = UIBezierPath(roundedRect:viewToRound.bounds, byRoundingCorners:[.TopRight, .BottomLeft], cornerRadii: CGSizeMake(20, 20))let maskLayer = CAShapeLayer()maskLayer.path = path.CGPathviewToRound.layer.mask = maskLayer
SWIFT 3.0版本:
let path = UIBezierPath(roundedRect:viewToRound.bounds, byRoundingCorners:[.topRight, .bottomLeft], cornerRadii: CGSize(width: 20, height: 20))let maskLayer = CAShapeLayer()maskLayer.path = path.cgPath viewToRound.layer.mask = maskLayer
四季花海
TA贡献1811条经验 获得超5个赞
extension UIView {
func roundCorners(_ 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 }}view.roundCorners([.topLeft, .bottomRight], radius: 10)
注
UIViewroundCornerslayoutSubviews
class View: UIView {
override func layoutSubviews() {
super.layoutSubviews()
self.roundCorners([.topLeft, .bottomLeft], radius: 10)
}}- 3 回答
- 0 关注
- 1010 浏览
添加回答
举报
0/150
提交
取消
