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;
- 不能通过系统属性实现百思tabBar,
- 设置导航条内容 => 由导航控制器的栈顶控制器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];
```
推荐阅读
- 2020-04-07vue中Axios的封装和API接口的管理
- iOS中的Block
- 17|17 关山松 第二课作业#公众号项目# D20
- RxJava|RxJava 在Android项目中的使用(一)
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片
- 《机器学习实战》高清中文版PDF英文版PDF+源代码下载
- 2019-08-29|2019-08-29 iOS13适配那点事
- Hacking|Hacking with iOS: SwiftUI Edition - SnowSeeker 项目(一)
- iOS面试题--基础
- --木木--|--木木-- 第二课作业#翼丰会(每日一淘6+1实战裂变被动引流# 6+1模式)