ios – UIBarButtonItem上没有阴影浮雕

ios – UIBarButtonItem上没有阴影浮雕,第1张

概述我有自定义UIBarButtonItem的问题.当我通过创建自定义UIBarButtonItem时 [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"FilterIcon.png"] style:UIBarButtonItemStyleBordered target:self action:@selector(filterTou 我有自定义UIbarbuttonItem的问题.当我通过创建自定义UIbarbuttonItem时
[[UIbarbuttonItem alloc]initWithImage:[UIImage imagenamed:@"FilterIcon.png"] style:UIbarbuttonItemStylebordered target:self action:@selector(filtertouched:)];

生成的按钮没有“浮雕”外观,系统项目通过在其图标后面放置一个半透明的黑色阴影来实现.

在左侧,您可以看到“组织”系统栏按钮项,右键是上面代码的结果.

在资源中创建阴影是徒劳的,因为iOS / Cocoa只使用图像的掩码并丢弃任何颜色信息.

有趣的是,如果我在Interface-Builder中创建条形按钮项,它看起来很好.但是,在我的问题的上下文中,我需要在代码中创建按钮项.

解决方法 James Furey的剧本有Objective-C版本.
- (UIImage *)applyToolbarbuttonStyling:(UIImage *)oldImage {    float shadowOffset = 1;    float shadowOpacity = .54;    CGRect imageRect = CGRectMake(0,oldImage.size.wIDth,oldImage.size.height);    CGRect shadowRect = CGRectMake(0,shadowOffset,oldImage.size.height);    CGRect newRect = CGRectUnion(imageRect,shadowRect);    UIGraphicsBeginImageContextWithOptions(newRect.size,NO,oldImage.scale);    CGContextRef ctx = UIGraphicsGetCurrentContext();    CGContextScaleCTM(ctx,1,-1);    CGContextTranslateCTM(ctx,-(newRect.size.height));    CGContextSaveGState(ctx);    CGContextClipToMask(ctx,shadowRect,oldImage.CGImage);    CGContextSetFillcolorWithcolor(ctx,[UIcolor colorWithWhite:0 Alpha:shadowOpacity].CGcolor);    CGContextFillRect(ctx,shadowRect);    CGContextRestoreGState(ctx);    CGContextClipToMask(ctx,imageRect,[UIcolor colorWithWhite:1 Alpha:1].CGcolor);    CGContextFillRect(ctx,imageRect);    UIImage *newImage = UIGraphicsGetimageFromCurrentimageContext();    UIGraphicsEndImageContext();    return newImage;}
总结

以上是内存溢出为你收集整理的ios – UIBarButtonItem上没有阴影/浮雕全部内容,希望文章能够帮你解决ios – UIBarButtonItem上没有阴影/浮雕所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1099168.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存