iOS项目实战02

修改插件:查找插件 -> 插件路径(不能记) -> Xcode插件开发 -> 查看插件代码 -> 搜索install -> 就能找到插件安装路径

1. 懒加载机制

 UIViewController的view,也是懒加载
- (UIView *)view
{
    if (_view == nil) {
        [self loadView];
        [self viewDidLoad];
    }
    return _view;
}

2. tabBar上的按钮问题

  • tabBarItem不是按钮,只是按钮对应模型
  • tabBar上按钮的内容由对应子控制器的tabBarItem决定
  • 如果想通过导航控制器子控制器去设置,必须要设置图片
  • 图片被选中的时候,图片被渲染
    • 直接修改照片Render As:Original Image
    • 通过代码
  • 按钮被选中的时候,文字也被渲染,解决办法:通过富文本属性去设置文字颜色,字体,阴影,下划线,图文混排等等

// 为什么要加载类到内存
// 程序一启动,会自动把所有的类加载进内存
// 什么时候调用:当类加载到内存的时候会调用
// 调用一次
+ (void)load
{ 
    // 设置文字颜色
    // 获取所有UITabBarItem外观
    UITabBarItem *item = [UITabBarItem appearance];
    // 文字颜色为黑色
    // 字典描述文字信息
    // Bug:在选中状态下设置文字字体不成功,应该在正常状态下去设置文字字体
    NSMutableDictionary *attr = [NSMutableDictionary dictionary];
    attr[NSForegroundColorAttributeName] = [UIColor blackColor];
    // 设置选中状态下文字颜色
    [item setTitleTextAttributes:attr forState:UIControlStateSelected];
    
    // 设置正常状态下文字字体
    NSMutableDictionary *attrNor = [NSMutableDictionary dictionary];
    attrNor[NSFontAttributeName] = [UIFont systemFontOfSize:13];
    [item setTitleTextAttributes:attrNor forState:UIControlStateNormal];
}

  • 中间发布按钮显示不出来,普通和选中状态下都被渲染(图片尺寸跟tabBar高度一样,就会渲染)
    • 不能通过系统属性实现百思tabBar,
      系统的tabBar只有选中状态,但是百思中间按钮,高亮
    • 自定义个按钮添加到相应位置tarBar位置上
    • 自定义的按钮在viewDidLoad添加上去,tabBa上原有按钮比自定义按钮后添加上去,viewWillAppear添加上去
    • 让原tarBarItem失效vc2.tabBarItem.enabled = NO;

3.设置导航条内容

  • 设置导航条内容 => 由导航控制器的栈顶控制器navigationItem决定
    • UINavigationItem:决定导航条上(左边,右边,中间)内容
    • UIBarButtonItem:决定导航条上按钮具体内容
  • bug: 按钮点击范围比较大,点击超出按钮范围也会响应
    • 把一个按钮包装成UIBarButtonItem就有问题,不能把一个按钮包装成UIBarButtonItem,
    • 用UIView包装按钮,再包装成UIBarButtonItem

UIView *containerView = [[UIView alloc] initWithFrame:btn.bounds];
    [containerView addSubview:btn];
    
    return [[UIBarButtonItem alloc] initWithCustomView:containerView];
  • 设置导航条按钮的选中状态只能通过代码实现
    UIBarButtonItem *setting =  [UIBarButtonItem itemWithImage:[UIImage imageNamed:@"mine-setting-icon"] highImage:[UIImage imageNamed:@"mine-setting-icon-click"] target:self action:@selector(settingClick)];

    UIBarButtonItem *night =  [UIBarButtonItem itemWithImage:[UIImage imageNamed:@"mine-moon-icon"] selImage:[UIImage imageNamed:@"mine-moon-icon-click"] target:self action:@selector(nightClick:)];
    
    self.navigationItem.rightBarButtonItems = @[setting,night];
    
}
- (void)nightClick:(UIButton *)btn
{
    btn.selected = !btn.selected;    
}
  • 随机颜色的生成
[UIColor colorWithRed:((float)arc4random_uniform(256) / 255.0) green:((float)arc4random_uniform(256) / 255.0) blue:((float)arc4random_uniform(256) / 255.0) alpha:1.0];```

你可能感兴趣的:(iOS项目实战02)