在我的应用程序中,我有自定义渐变,用于对 的所有实例进行样式化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 或某些此类资源。
任何帮助表示赞赏,谢谢。