我想有风格同样喜欢iPad的设置应用程序的一组UITableView的详细视图用于iOS的7.
这是一个圆角的tableView.请查看附件了解详情.
是一些默认设置使它看起来像那样,或者我们需要为它做一些自定义绘图.
任何暗示正确的方向将不胜感激.
谢谢

不久之前,我发布了一个关于在视图的两个角上进行四舍五入的问题,得到了很好的响应,但是在实现它时遇到了问题.这是我的drawRect:方法:
- (void)drawRect:(CGRect)rect {
//[super drawRect:rect]; <------Should I uncomment this?
int radius = 5;
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextBeginPath(context);
CGContextAddArc(context, rect.origin.x + radius, rect.origin.y + rect.size.height - radius, radius, M_PI, M_PI / 2, 1);
CGContextAddArc(context, rect.origin.x + rect.size.width - radius, rect.origin.y + rect.size.height - radius, radius, M_PI / 2, 0.0f, 1);
CGContextClosePath(context);
CGContextClip(context);
}
Run Code Online (Sandbox Code Playgroud)
正在调用该方法,但似乎不会影响视图的结果.有什么想法吗?
我需要在swift中创建一个只有两个圆角的矩形(Objective C代码也可以).
目前我的代码正在创建两个矩形
CGPathCreateWithRoundedRect(CGRectMake(0, 0, 30, 60), 5, 5, nil);
Run Code Online (Sandbox Code Playgroud)
和
CGPathCreateWithRoundedRect(CGRectMake(0, 0, 30, 60), 0, 0, nil);
Run Code Online (Sandbox Code Playgroud)
合并它们(有两个直角和两个圆角)但我对代码不满意,我很确定应该有更好的方法来做到这一点.
我是iOS和图形开发的新手.
有没有办法只为UIView的左下角,右下角和左上角设置cornerRadius?
我尝试了下面这个,但最终让视图消失了.下面的代码有什么问题吗?
UIBezierPath *maskPath;
maskPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds byRoundingCorners:(UIRectCornerBottomLeft | UIRectCornerBottomRight) cornerRadii:CGSizeMake(20.0, 20.0)];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.path = maskPath.CGPath;
view.layer.mask = maskLayer;
Run Code Online (Sandbox Code Playgroud) 我知道我可以使用以下四个角来围绕:
myBtn.layer.cornerRadius = 8
myBtn.layer.masksToBounds = true
Run Code Online (Sandbox Code Playgroud)
由于我只想围绕第二轮,我做了一些研究,发现了这个:
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
}
}
Run Code Online (Sandbox Code Playgroud)
这被称为:
view.roundCorners([.TopLeft , .TopRight], radius: 10)
Run Code Online (Sandbox Code Playgroud)
然而,这对于UIButton不起作用.当我将扩展名切换为类型UIButton并将其传递给按钮时,输出如下所示:
问题是,我如何使其适应UIButton?
这个问题让我很困惑.我有一个小的UIView我用来显示选择了哪个按钮.但是,它没有显示在我的应用程序中 - 它应该在"本地活动"下,但不会显示:

那很好,我想,我只是调试视图层次结构,看看它在哪里!看起来它应该是它应该是的位置:

有谁知道这里会发生什么?谢谢您的帮助!
我想为Swift -3中的视图设置不同的角半径,我可以将每个角的半径设置为相同的值,如下面的帖子中提到的那样,如何设置cornerRadius仅用于左上角和顶部UIView的右角?
有没有办法按以下格式设置转角半径?半径左上:18半径右上:18半径右下:3半径左下:18
我知道您可以用来.cornerRadius()对swiftUI视图的所有角进行圆角处理,但是有没有办法只对特定的角部(例如顶部)进行圆角处理?
设置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)美好的一天!
我试图让我的视图(在主视图中查看)使圆角.我这样做,但它不起作用.有任何想法吗?
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
currenView = [[UIView alloc] init];
UIBezierPath *maskPath;
maskPath = [UIBezierPath bezierPathWithRoundedRect:currenView.bounds byRoundingCorners:UIRectCornerAllCorners cornerRadii:CGSizeMake(30.0, 30.0)];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = currenView.bounds;
maskLayer.path = maskPath.CGPath;
currenView.layer.mask = maskLayer;
}
return self;
Run Code Online (Sandbox Code Playgroud) 我有以下代码只围绕视图的特定角:
- (void)roundOnlySpecifiedCornersInView:(UIView *)view corners:(UIRectCorner)corners
{
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds byRoundingCorners:(corners) cornerRadii:CGSizeMake(4.0, 4.0)];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.path = maskPath.CGPath;
view.layer.mask = maskLayer;
}
Run Code Online (Sandbox Code Playgroud)
这完全孤立地工作.现在我在想法中也想要阴影,但我特别想在不同的情况下应用阴影:
我遇到的所有技术都是通过创建视图的插图来完成的.这个的问题是,假设你只想在左/右侧保持阴影,你偏移底部和顶部.由于Rect现在不太高,左右的阴影不会覆盖视图的整个高度.此外,用于圆角的遮罩层会导致阴影不再出现.
示例代码:
innerView.layer.shadowColor = [[UIColor colorWithWhite:0.0f alpha:0.1f] CGColor];
innerView.layer.shadowOpacity = 1.0f;
innerView.layer.shadowOffset = CGSizeMake(0.0f, 0.0f);
innerView.layer.shadowRadius = 6.0f;
CGRect shadowFrame = UIEdgeInsetsInsetRect(innerView.bounds, UIEdgeInsetsMake(9, 0, 9, 0));
CGPathRef shadowPath = [UIBezierPath bezierPathWithRect:shadowFrame].CGPath;
innerView.layer.shadowPath = shadowPath;
Run Code Online (Sandbox Code Playgroud)
如何在视图中对特定角进行圆角处理,同时仅在指定边显示阴影?
Swift中的答案也很受欢迎!
我想要的截图(这个很简单,因为所有角都需要圆角所以我可以使用.layer.cornerRadius它并且它在所有边都有阴影):

现在我只想围绕2个角(左上角和右上角,左下角和右下角)并仅向某些边添加阴影.
在ViewController的主NSView中,我使用重写了func drawRect(dirtyRect: NSRect)在主视图上实现圆角的方法NSBezierPath。用同样的方法,我还指定了主视图的渐变背景。
override func drawRect(dirtyRect: NSRect) {
let path: NSBezierPath = NSBezierPath(roundedRect: self.bounds, xRadius: 18.0, yRadius: 18.0)
path.addClip()
let gradient = NSGradient(startingColor: NSColor(hexColorCode: "#383838"), endingColor: NSColor(hexColorCode: "#222222"))
gradient.drawInRect(self.frame, angle: 90)
}
Run Code Online (Sandbox Code Playgroud)
下图说明了出现的问题:

该图显示了视图角之一。圆角的倒圆仅部分成功,因为仍然有一个白色圆角伸出到窗口的圆角之外。
如果有人有更好的方法设置窗口的拐角半径,我会接受这样的建议。我对此事进行了大量研究,但是这种解决方案似乎是最简单的。
非常感谢您提供有关如何解决此问题的建议。
ios ×10
objective-c ×5
swift ×4
iphone ×3
uiview ×3
cornerradius ×2
ipad ×2
xcode ×2
ios7 ×1
macos ×1
nsview ×1
rounding ×1
swift3 ×1
swiftui ×1
uibezierpath ×1
uibutton ×1
uitableview ×1
view ×1