我能达到这样的最简单方法是什么:
是否通过子类化UITabBarController?如果是,需要更改哪些属性?
答案 0 :(得分:0)
@interface UITabBarController (private)
- (UITabBar *)tabBar;
@end
@implementation CustomizeUITabBarController
- (void)viewDidLoad {
[super viewDidLoad];
CGRect frame = CGRectMake(0.0, 0.0, self.view.bounds.size.width, 48);
UIView *v = [[UIView alloc] initWithFrame:frame];
[v setBackgroundColor:kMainColor];
[v setAlpha:0.5];
[[self tabBar] addSubview:v];
[v release];
}
@end
希望它能帮到你......
答案 1 :(得分:0)
是的,继承UITabbarController是正确的方法。
覆盖drawRect方法:
- (void)drawRect:(CGRect)rect {
[[UIImage imageNamed:@"yourNavigationBar.png"] drawInRect: CGRectMake(0, 0, self.frame.size.width, self.frame.size.height) ];
}
将带有渐变的图像添加到项目中。
答案 2 :(得分:0)
这是一个老问题,但它首先在搜索TabBar渐变时出现。更容易实现这一点的方法是外观。只需将其放入 applicationDidFinishLaunching 方法中即可。
[[UITabBar appearance] setBackgroundImage:[UIImage imageNamed:@"navBarImage_1x49"]];
而且,作为奖励,如果您更喜欢在代码中创建渐变图像,则可以执行此操作:
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = CGRectMake(0, 0, 1, 49);
gradient.colors = [NSArray arrayWithObjects:(id)[UIColor.darkGrayColor] CGColor], (id)[UIColor.blackColor] CGColor], nil];
UIGraphicsBeginImageContext(gradient.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[gradient renderInContext:context];
UIImage *gradientImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
答案 3 :(得分:0)
我的应用程序遇到了同样的问题,我想出了以下内容: 在 applicationDidFinishLaunching 方法中,我创建了一个绘制渐变的函数,并使用我的UITabBarController实例根据设备的宽度设置正确的渐变框架。
- (UIImage *)drawGradientInView:(UITabBarController *) tabBarVC {
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = CGRectMake(CGRectGetMinX(tabBarVC.tabBar.frame), CGRectGetMinY(tabBarVC.tabBar.frame), CGRectGetWidth(tabBarVC.view.frame), CGRectGetHeight(tabBarVC.tabBar.frame));
//set up your gradient
//......
UIImage *gradientImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return gradientImage;
}
获取UITabBarController的实例
UITabBarController *tabVC = (UITabBarController *)[UIApplication sharedApplication].windows.firstObject.rootViewController;
设置渐变
[UITabBar appearance].backgroundImage = [self drawGradientInView:tabVC];
我不确定这是否是正确的方法,但它对我有用。