有没有办法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;
Run Code Online (Sandbox Code Playgroud) 嗨,我正在寻找一个干净的解决方案,没有覆盖drawRect或类似的东西UIView,在视图的顶部创建一个圆角.我的主要问题是如果视图调整大小或类似的话,创建变量解决方案.有清洁的解决方案吗?Apple也是第一个表项目.做到这一点并不难.
设置UIView角的半径可以通过以下方式完成:
设置layer的cornerRadius属性:
view.layer.cornerRadius = 5;
view.layer.masksToBounds = true;
Run Code Online (Sandbox Code Playgroud)涂上面膜:
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
}
Run Code Online (Sandbox Code Playgroud)覆盖draw(_:):
func draw(_ rect: CGRect) {
// Size of rounded rectangle
let rectWidth = rect.width
let rectHeight = rect.height
// Find center of actual frame to set rectangle in middle
let xf: CGFloat = (self.frame.width …Run Code Online (Sandbox Code Playgroud)我正在尝试使用下面的代码来绕顶角
func roundCorners(corners:UIRectCorner, radius: CGFloat) {
let path = UIBezierPath(roundedRect: self.bounds,
byRoundingCorners: corners,
cornerRadii: CGSize(width: radius, height: radius))
let maskLayer = CAShapeLayer()
maskLayer.frame = self.bounds
maskLayer.path = path.cgPath
self.layer.mask = maskLayer
}
Run Code Online (Sandbox Code Playgroud)
使用 myView.roundCorners(corners:[.topLeft, .topRight], radius: radius)
这是在tableView sectionHeader中,如果我向下滚动然后使用相同的代码向上舍入:

顶部折扣视角也使用相同的功能进行四舍五入.
感谢帮助.
更新 如果我修复视图上的宽度然后它工作正常.
uitabbarcontroller uitableview cashapelayer uibezierpath swift
uiview ×3
ios ×2
swift ×2
cashapelayer ×1
cocoa-touch ×1
cornerradius ×1
objective-c ×1
uibezierpath ×1
uitableview ×1