代码中创建的 UITabBarItem 图像不出现
Posted
技术标签:
【中文标题】代码中创建的 UITabBarItem 图像不出现【英文标题】:UITabBarItem image created in code doesn’t appear 【发布时间】:2014-03-10 20:19:09 【问题描述】:我在代码中创建了以下视图,想法是将其用作UITableViewCell
和UITabBarItem
中的图像:
- (void)drawRect:(CGRect)rect
// Fill the background with white
CGContextRef context = UIGraphicsGetCurrentContext();
UIColor * whiteColor = [UIColor colorWithRed:1.0
green:1.0
blue:1.0
alpha:1.0];
CGContextSetFillColorWithColor(context, whiteColor.CGColor);
CGContextFillRect(context, self.bounds);
//// Color Declarations
UIColor* fillColor = [UIColor colorWithRed: 1.0
green: 1.0
blue: 1.0
alpha: 1.0];
UIColor* strokeColor = [UIColor colorWithRed: 0.0
green: 0.0
blue: 0.0
alpha: 1.0];
//// Big Oval Drawing
CGRect bigOvalRect = CGRectMake(rect.origin.x+2,
rect.origin.y+5,
42.0,
42.0);
UIBezierPath* bigOvalPath = [UIBezierPath bezierPath];
[bigOvalPath addArcWithCenter: CGPointMake(CGRectGetMidX(bigOvalRect), CGRectGetMidY(bigOvalRect))
radius: CGRectGetWidth(bigOvalRect) / 2
startAngle: 40 * M_PI/180
endAngle: 320 * M_PI/180
clockwise: YES];
[fillColor setFill];
[bigOvalPath fill];
[strokeColor setStroke];
bigOvalPath.lineWidth = 1;
[bigOvalPath stroke];
要从此 UIView 创建 UIImage,我正在使用以下代码:
#import <QuartzCore/QuartzCore.h>
+ (UIImage *) imageWithView:(UIView *)view
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage * img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
当我在 UITableViewCells 中使用它时,一切都按预期工作,但是当我将它设置为我的 UITabBarItem 的图像时,我只看到一个蓝色矩形 (ios7):
MyIcon *icon = [[MyIcon alloc] initWithFrame:CGRectMake(0.0, 0.0, 50.0, 50.0)];
UIImage *tabImage =[self imageWithView:icon];
self.navigationController.tabBarItem.image = tabImage;
我猜这与图像的 alpha 有关,但我该如何修复它?
【问题讨论】:
尝试使用self.navigationController.tabBarItem.image = tabImage;
处的断点在控制台中预览图像。
如果可以看到图片,那么标签栏中的蓝色可能是由于图片大小的原因。尝试使用尺寸等于或小于48 x 32
尺寸的图像。
【参考方案1】:
这不是与视图大小有关的问题,而是与它的 alpha 相关的问题。
我通过将 backgroundColor(是 whiteColor)和 fillColor 设置为:
[UIColor clearColor]
并通过在initWithFrame:
方法中将视图设置为不透明:
[self setOpaque = NO];
【讨论】:
以上是关于代码中创建的 UITabBarItem 图像不出现的主要内容,如果未能解决你的问题,请参考以下文章
更改在 UITableView 中创建的 UIButton 的图像