Ios 选择时,选项卡栏按钮背景会发生变化
我是iOS开发方面的新手,但在大量搜索我的答案之后,我还没有找到答案。我现在正在考虑在选项卡栏上使用纯图像视图,尽管我喜欢使用选项卡栏元素。我的问题是,当我选择该按钮时,我看不到任何改变选项卡栏按钮单元格背景颜色的方法。我可以更改色调(我用于按钮的图像的颜色)。选择时是否需要简单地更改背景(选择按钮时我使用白色图像,因此我需要更改单元格的背景颜色),还是应该使用imageView来满足我的需要?编辑2:我认为使用selectedImageTintColor:(不推荐使用)或选择指示图像:uitabar中的方法Ios 选择时,选项卡栏按钮背景会发生变化,ios,tabbar,uitabbaritem,Ios,Tabbar,Uitabbaritem,我是iOS开发方面的新手,但在大量搜索我的答案之后,我还没有找到答案。我现在正在考虑在选项卡栏上使用纯图像视图,尽管我喜欢使用选项卡栏元素。我的问题是,当我选择该按钮时,我看不到任何改变选项卡栏按钮单元格背景颜色的方法。我可以更改色调(我用于按钮的图像的颜色)。选择时是否需要简单地更改背景(选择按钮时我使用白色图像,因此我需要更改单元格的背景颜色),还是应该使用imageView来满足我的需要?编辑2:我认为使用selectedImageTintColor:(不推荐使用)或选择指示图像:uita
旧答复: 根据文件: 有一个方便的属性SelecteImage来执行这些操作 Use可以直接在init方法中设置它。 UIViewController中的示例:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.title = @"my controller";
self.tabBarItem = [[UITabBarItem alloc] initWithTitle:self.title image:[UIImage imageNamed:@"normalTabBarItem"] selectedImage:[UIImage imageNamed:@"selectedTabBarItem"]];
}
return self;
}
编辑:uitabaritem没有背景色。因此,您必须将“背景色”直接嵌入到图像和选定的图像中
默认情况下,将根据源图像中的alpha值自动创建实际的未选定图像和选定图像。若要防止系统着色,请使用UIImageRenderingModeAlwaysOriginal提供图像。若要更改选定的选项卡栏项目背景,请使用以下初始化创建名为TabBar的自定义类:
#import "TabBar.h"
#define RGB(r, g, b) [UIColor colorWithRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:1]
@implementation TabBar
- (instancetype)initWithCoder:(NSCoder *)aDecoder {
if (!(self = [super initWithCoder:aDecoder])) return nil;
[self setupSelectionIndicatorImage];
return self;
}
- (void)setupSelectionIndicatorImage {
UIView *item = self.subviews.firstObject;
UIColor *backgroundColor = RGB(0, 117, 255);
// Creating background image
CGRect rect = CGRectMake(0, 0, item.bounds.size.width, item.bounds.size.height);
UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0); // 0 == device main screen scale
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [backgroundColor CGColor]);
CGContextFillRect(context, rect);
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
self.selectionIndicatorImage = img;
}
@end
我的问题是,我想更改选项卡栏按钮填充的整个空间的背景颜色,而不仅仅是所选的图像。。。。这是我在问题中指出的。我选择的图像很好。我已经编辑了我的答案。如果它仍然不能满足你自己,你能发布你想要达到的目标的图片吗?与此同时,自从我上次回复以来,我一直在思考这个方向。但我当时在想,当我旋转屏幕(并将选项卡栏加宽到全宽)时,图像不会拉伸?我有时间就试试看。我责怪公司在想要我描述的lol时给我发送的透明图片。我将在一小时后回来。(批准你的回答是否结束了我的帖子?我仍然希望得到更多启发)我更新了我的评论。UITabBar似乎有方便的方法来实现这一点。告诉我这是否足够。以下是与您的问题相关的其他主题:[[UITabBar外观]设置选择指示图像:blackk];此调用是否会影响我在应用程序中创建的所有选项卡栏?通常情况下,我会认为我必须以某种方式参考(或出口)我正在定制的选项卡栏