iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 在核心图形中绘制圆角矩形大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想复制认iPad日历的事件标记,如下所示:

我正在尝试使用COregraphics,绘制圆形rect的路径.这是我能想到的结果:

正如您所看到的,iPad的版本在圆角处看起来更平滑.我试图使用更大的线宽,看起来像这样

我的代码看起来像这样(从这个网站获得):

UIColor* fillColor= [self.color colorBymultiplyingByRed:1 green:1 blue:1 alpha:0.2];

CGContextSetLineWidth(ctx,1.0);
CGContextSetstrokeColorWithColor(ctx,self.color.CGColor);
CGContextSetFillColorWithColor(ctx,fillColor.CGColor);

CGRect rrect = self.bounds;

CGFloat radius = 30.0;
CGFloat width = CGRectGetWidth(rrect);
CGFloat height = CGRectGetHeight(rrect);

if (radius > width/2.0)
   radius = width/2.0;

if (radius > height/2.0)
   radius = height/2.0;    

CGFloat minx = CGRectGetMinX(rrect);
CGFloat midx = CGRectGetMidX(rrect);
CGFloat maxx = CGRectGetMaxX(rrect);
CGFloat miny = CGRectGetMinY(rrect);
CGFloat midy = CGRectGetMidY(rrect);
CGFloat maxy = CGRectGetMaxY(rrect);
CGContextMoveToPoint(ctx,minx,midy);
CGContextAddArcToPoint(ctx,miny,midx,radius);
CGContextAddArcToPoint(ctx,maxx,midy,radius);

CGContextAddArcToPoint(ctx,maxy,radius);
CGContextClosePath(ctX);
CGContextDrawPath(ctx,kCGPathFillstroke);

// draw circle on left side

CGRect target= CGRectMake(rect.origin.x + 4.0,rect.origin.y + 3.0,7.0,7.0);

CGContextSetFillColorWithColor(ctx,self.color.CGColor);
CGContextSetAlpha(ctx,0.4);
CGContextFillEllipseInRect(ctx,target);

CGContextSetAlpha(ctx,0.9);
CGContextSetstrokeColorWithColor(ctx,self.color.CGColor);
CGContextstrokeEllipseInRect(ctx,target);

任何人都可以帮我把结果更接近原作吗?@R_808_10675@用不同的技术来绘制圆角矩形,还是有任何参数我可以更改以使其看起来更平滑?
我已经尝试过使用UIBezierPath,但它看起来基本相同.有小费吗?

[edit]基于CGRecTinset的解决方案如下所示:

解决方法

你的问题是,笔划应用在路径的中心,并且它的一半会被裁剪/遮盖到视图的边界,因为它会在视图之外绘制.如果您在每个方向上将绘图插入@L_874_9@点,您将获得所需的结果.如果增加行程的宽度,则需要进一步插入图形(行程宽度的一半(即4点宽行程应插入2点).

这可以通过改变轻松解决

CGRect rrect = self.bounds;

// Inset x and y by half the stroke width (1 point for 2 point stroke) 
CGRect rrect = CGRecTinset(self.bounds,1,1);

大佬总结

以上是大佬教程为你收集整理的ios – 在核心图形中绘制圆角矩形全部内容,希望文章能够帮你解决ios – 在核心图形中绘制圆角矩形所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。