[[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上没有阴影/浮雕所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)