Dev*_*Dev 34 iphone objective-c uibarbuttonitem
我有一个想要在UIBarButtonItem上显示的图像,但由于某种原因它只显示它的轮廓,其余的都是白色的.我怎么能让它实际显示图像?
谢谢!
amr*_*rox 62
更新:请参阅MANIAK_dobrii的答案以获得更简单的解决方案,可在iOS 7+中找到.
以下是我如何使用UIBarButtonItem的图像:
UIImage *image = [UIImage imageNamed:@"buttonImage.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.bounds = CGRectMake( 0, 0, image.size.width, image.size.height );
[button setImage:image forState:UIControlStateNormal];
[button addTarget:myTarget action:@selector(myAction) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
…
Run Code Online (Sandbox Code Playgroud)
MAN*_*rii 58
还有其他iOS7 +解决方案:
NSString *iconFilename = // ...
UIImage *image =
[[UIImage imageNamed:iconFilename]
imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIBarButtonItem *barButtonItem =
[[UIBarButtonItem alloc] initWithImage:image
style:UIBarButtonItemStylePlain
target:self
action:@selector(onBarButtonItemTapped:)];
Run Code Online (Sandbox Code Playgroud)
从UIImage.h中提取:
...导航栏,标签栏,工具栏和分段控件会自动将其前景图像视为模板...您可以使用UIImageRenderingModeAlwaysTemplate强制您的图像始终呈现为模板或UIImageRenderingModeAlwaysOriginal以强制您的图像始终呈现为原创.
Fel*_*rri 39
还有另一种方法根本不涉及编码.
首先,将要放置的图像放在Assets.xcassets文档的栏上.
在资源浏览器上选择图像.
在右侧垂直工具栏上打开该图像的"属性"检查器.
在"渲染为"上选择"原始图像".
即使在故事板上,按钮仍将使用色调颜色进行绘制,当在模拟器上运行时,将显示原始图像.
图像的默认呈现模式因UI控件而异.但是,如果在属性检查器上设置此参数,则可以强制始终使用特定的渲染模式表示图像.
如果需要在不同控制器上使用不同的渲染模式表示相同的图像,则MANIAK_dobrii的响应更合适.
Kap*_*ain 10
在Swift 3中:
let iconname = // ...
let image = UIImage(named: iconname)?.withRenderingMode(.alwaysOriginal)
let barButtonItem = UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(self. onBarButtonItemTapped))
self.navigationItem.leftBarButtonItem = barButtonItem
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23213 次 |
| 最近记录: |