iOS UINavigation“后退”按钮贝塞尔路径

iOS UINavigation“后退”按钮贝塞尔路径,ios,uibarbuttonitem,uibezierpath,Ios,Uibarbuttonitem,Uibezierpath,在我的应用程序中,我使用自定义渐变设置UIBarButtonItem的所有实例的样式,通过创建渐变、使用圆角矩形Bezier路径剪裁渐变,然后创建可调整大小的UIImage来完成,如下所示: CGRect rect = CGRectMake(0, 0, 44, 44); CGSize size = rect.size; CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB(); size_t gradientNumberOfLocati

在我的应用程序中,我使用自定义渐变设置UIBarButtonItem的所有实例的样式,通过创建渐变、使用圆角矩形Bezier路径剪裁渐变,然后创建可调整大小的UIImage来完成,如下所示:

CGRect rect = CGRectMake(0, 0, 44, 44);
CGSize size = rect.size;
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
size_t gradientNumberOfLocations = 2;

UIGraphicsBeginImageContextWithOptions(size, NO, 0);
CGContextRef btncontext = UIGraphicsGetCurrentContext();

CGFloat btngradientLocations[2] = { 0.2, 1.0 };
CGFloat btngradientComponents[8] = { 0.10, 0.10, 0.10, 1.0, 0.05, 0.05, 0.05, 1.0 };

CGGradientRef btngradient = CGGradientCreateWithColorComponents (colorspace, btngradientComponents, btngradientLocations, gradientNumberOfLocations);

UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:4.0f];
[path addClip];

CGContextDrawLinearGradient(btncontext, btngradient, CGPointMake(0, 0), CGPointMake(0, size.height), 0);

UIImage *btnimage = UIGraphicsGetImageFromCurrentImageContext();

CGGradientRelease(btngradient);
UIGraphicsEndImageContext();

CGColorSpaceRelease(colorspace);

UIImage *navButton = [btnimage resizableImageWithCapInsets:UIEdgeInsetsMake(22.0, 8.0, 22.0, 8.0)];

[[UIBarButtonItem appearance] setBackgroundImage:navButton forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
这很好,我正在开发一种类似的方法,通过-setBackButtonBackgroundImage将后退按钮样式化,但是我有一个问题:

我想知道是否有人知道一种正确的方法来创建表示后退按钮轮廓的UIBezierPath对象,这样我就可以创建一个渐变并以编程方式将渐变剪裁为后退按钮形状,就像在示例中一样,而不必使用PNG或类似的资源


非常感谢您的帮助。

我花了一些时间才找到这个,但这里有一个副本。