【问题标题】:How to set radius for bottom corners only如何仅设置底角的半径
【发布时间】:2017-01-10 23:13:10
【问题描述】:

如何只为底部两个角设置半径,如上图所示?

【问题讨论】:

  • 你忘了问问题!
  • @bub 我只需要像图片一样将两个底角倒圆。
  • 使用UIBezierPath
  • 只需使用图片即可。
  • 这可能对你有帮助stackoverflow.com/a/31233171/6619234

标签: ios objective-c iphone


【解决方案1】:

我刚刚做到了(对于 Swift 3,但它也可能对您有所帮助),您应该为您的图片提供一个出口,例如称为 yourImage,然后在 viewDidLoad 上执行此操作:

    let shapeLayer = CAShapeLayer()
   shapeLayer.path = UIBezierPath(roundedRect: yourImage.bounds, byRoundingCorners: [.bottomLeft, .bottomRight], cornerRadii: CGSize(width: 30, height: 30)).cgPath
yourImage.layer.mask = shapeLayer

【讨论】:

  • OP 要求使用 Objective-C。不过,您应该同时提供两者,因为这仍然有效。
  • 你是对的,没看到,不幸的是我不知道 Objective C,现在将编辑我的答案让他知道。
  • 看看对他有没有帮助,否则我可以搜索。
  • 如果我发布了一个从你的 Swift 3.0 答案转换而来的 Objective-c 答案,你介意@MagoNicolasPalacios 吗? :) 我觉得有必要挑战自己来转换你的答案。天啊,Objective-c 一直很奇怪。
  • 太棒了,因为我不知道目标 C :D
【解决方案2】:

自从我上次编写 Objective-c 代码以来已经过去了几个月,因为我想再次整理它,这是用 Swift 3.0 编写的 Mago Nicolas Palacios 答案的 Objective-c 版本。

UIImageView *sampleImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"sample"]];
CGSize size = CGSizeMake(30, 30);
UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRoundedRect:sampleImage.bounds
                                                 byRoundingCorners:(UIRectCornerBottomRight | UIRectCornerTopLeft)
                                                       cornerRadii:size];
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
[shapeLayer setPath:[bezierPath CGPath]];
sampleImage.layer.mask = shapeLayer;

【讨论】:

  • 不错!你做到了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-18
  • 1970-01-01
相关资源
最近更新 更多