• UITabBarController的创建与自定义TarBar---学习笔记三


    代码如下:

    #import <UIKit/UIKit.h>
    
    @interface BSJTabBarViewController : UITabBarController
    
    @end
    #import "BSJTabBarViewController.h"
    #import "BSJTabBar.h"
    @interface BSJTabBarViewController ()
    
    
    @end
    
    @implementation BSJTabBarViewController
    
    #pragma mark --- life cycle
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
    //    self.tabBarItem = [UITabBarItem application]
        UITabBarItem *tabBarItem = [UITabBarItem  appearance];
        //未选中的
        NSMutableDictionary *norAttri = [NSMutableDictionary dictionary];
        norAttri[NSFontAttributeName] = [UIFont systemFontOfSize:14];
        norAttri[NSForegroundColorAttributeName] = [UIColor grayColor];
        [tabBarItem setTitleTextAttributes:norAttri forState:UIControlStateNormal];
        //选中的
        NSMutableDictionary *selectAttri = [NSMutableDictionary dictionary];
        selectAttri[NSForegroundColorAttributeName] = [UIColor darkGrayColor];
        [tabBarItem setTitleTextAttributes:selectAttri forState:UIControlStateSelected]; 
    
    //精华 
    [self setupChridViewController:[[UITableViewController alloc] init] title:NSLocalizedString(@"精华", nil) normalImage:@"tabBar_essence_icon" selectedImage:@"tabBar_essence_click_icon"]; 
    [self setupChridViewController:[[UIViewController alloc] init] title:NSLocalizedString(@"关注", nil) normalImage:@"tabBar_friendTrends_icon" selectedImage:@"tabBar_friendTrends_click_icon"]; 
    [self setupChridViewController:[[UITableViewController alloc] init] title:NSLocalizedString(@"新帖", nil) normalImage:@"tabBar_new_icon" selectedImage:@"tabBar_new_click_icon"]; 
    [self setupChridViewController:[[UITableViewController alloc] init] title:NSLocalizedString(@"我", nil) normalImage:@"tabBar_me_icon" selectedImage:@"tabBar_me_click_icon"];
     // 通过KVC,可以改变属性为readOnly,改变它的Key,也就是通过它的value找到它的key 
    [self setValue:[[BSJTabBar alloc] init] forKey:@"tabBar"];
     } 
    
    - (void)setupChridViewController:(UIViewController *)vc title:(NSString *)title normalImage:(NSString *)normalImage selectedImage:(NSString *)selectedImage{ vc.title = title; 
    if (normalImage.length && selectedImage.length ) 
    { vc.tabBarItem.image = [UIImage imageNamed:normalImage]; 
    vc.tabBarItem.selectedImage = [UIImage imageNamed:selectedImage]; } 
    [self addChildViewController:vc]; } 
    
    //tabBar  
    
    #import <UIKit/UIKit.h>
     @interface BSJTabBar : UITabBar
     @end 
    
    #import "BSJTabBar.h" 
    
    @interface BSJTabBar() @property (nonatomic, weak)UIButton *publicButton; 
    
    @end 
    @implementation BSJTabBar
     - (void)layoutSubviews{ [super layoutSubviews]; 
    
    // BSJLogFunc CGFloat buttonW = self.frame.size.width/5;
     CGFloat buttonH = self.frame.size.height;
     CGFloat buttonY = 0; 
    CGFloat i = 0;
     for (UIView *subView in self.subviews)
     { BSJLog(@"%@",NSStringFromClass(subView.class));
     // if (![subView.class isSubclassOfClass:[NSClassFromString(@"UITabBarButton") class]]) continue; 
    
    if (![@"UITabBarButton" isEqualToString:NSStringFromClass(subView.class)]) continue; CGFloat buttonX = i*buttonW; if (i >= 2) { buttonX += buttonW; } subView.frame = CGRectMake(buttonX, buttonY, buttonW, buttonH); i++; }
    //        [
    self.publicButton setFrame:CGRectMake(0, 0, self.frame.size.width/5, self.frame.size.height)]; 
    //
    self.publicButton.center = CGPointMake(self.center.x, self.center.y);
    }
     #pragma mark --- response methods
     - (void)buttonClick:(UIButton *)sender{ 
    } 
    
    #pragma mark --- setters and getters 
    - (UIButton *)publicButton{
     if (!_publicButton) 
    { UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [button setImage:[UIImage imageNamed:@"tabBar_publish_icon"] forState:UIControlStateNormal]; 
    [button setImage:[UIImage imageNamed:@"tabBar_publish_click_icon"] forState:UIControlStateHighlighted];
     [button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside]; 
     [self addSubview:button]; _publicButton = button; } return _publicButton; 
    }
     @end
    
    将来的自己,会感谢现在不放弃的自己!
  • 相关阅读:
    final、static关键字
    this关键字与super关键字区别
    JAVA常见报错
    Java抽象类和多态
    Java 类和接口的继承
    JAVA封装
    库存管理案例
    Map的遍历
    LinkedList vector集合,Set接口
    Collection,迭代器iterator,list接口
  • 原文地址:https://www.cnblogs.com/TheYouth/p/5831297.html
Copyright © 2020-2023  润新知