iOS开发中,调用系统相册遇到的问题

1.首先来说一下相册中常遇到的问题,那就是修改导航栏的颜色,导航返回按钮的颜色
UIImagePickerController *picker = [[UIImagePickerController alloc] init];

picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

//设置导航栏背景颜色

picker.navigationBar.barTintColor = [UIColor colorWithRed:20.f/255.0 green:24.0/255.0 blue:38.0/255.0 alpha:1];

//设置右侧取消按钮的字体颜色

picker.navigationBar.tintColor = [UIColor whiteColor];

2.我遇到的问题比较奇葩,那就是在调用系统相册之后,导航栏颜色变为透明,并且返回键变得很大,我需要解决的就是把取消键变小,但并没有改变按钮字体大小,只是退一步,还原系统原来字体的大小

//通过这个方法来统一设置导航栏的一些状态
UIBarButtonItem * appearance = [UIBarButtonItem appearanceWhenContainedInInstancesOfClasses:@[[UINavigationBar class]]];

 // 0和1表示点击按钮的状态      
        [appearance setTitleTextAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:18]} forState:0];
        [appearance setTitleTextAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:18]} forState:1];

3.简单介绍一下appearanceWhenContainedInInstancesOfClasses这个方法

+ (instancetype)appearance;

这个方法是统一全部改,把苹果对这个方法的注释翻译过来就知道怎么用了,我英文不行,大致意思我还是知道的。

翻译:自定义一个类的所有实例的外观,把外观修改的相关信息发送到外观的代理类。例如:修改导航栏的颜色
[[UINavigationBar appearance] setBarTintColor:myColor];
PS:在iOS7tintColor这个属性被移动到UIView,有特殊的继承行为在UIView.h文件中说明。这个继承行为可能和appearance的代理相冲突,因此tintColor这个属性不允许被用在appearance proxy。

+ (instancetype)appearanceWhenContainedIn:(nullable Class <UIAppearanceContainer>)ContainerClass, ...(废弃)
上面的方法适用于iOS5.0-9.0,在9.0之后就被下面这个方法替换掉了:
+ (instancetype)appearanceWhenContainedInInstancesOfClasses:(NSArray<Class <UIAppearanceContainer>> *)containerTypes后面的参数是一个数组,是把需要设置的类放在数组里面。
其实这两个方法上面的注释有这个方法的用法,一看就明白是怎么用。如下:
[[UINavigationBar appearanceWhenContainedInInstancesOfClasses:@[[UISplitViewController class]]] setBarTintColor:myColor];
[[UINavigationBar appearanceWhenContainedInInstancesOfClasses:@[[UITabBarController class], [UISplitViewController class]]] setBarTintColor:myTabbedNavBarColor];
这样就设置了指定类的导航栏的颜色了,很简单的。

复制代码

转载于:https://juejin.im/post/5a311bc46fb9a044fe465e2c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值