iOS项目实战02

【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]; ```

    推荐阅读