美文网首页
iOS开发中,调用系统相册遇到的问题

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

作者: 安静就好_ | 来源:发表于2017-08-07 14:57 被阅读420次
    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];
    这样就设置了指定类的导航栏的颜色了,很简单的。
    
    

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/mpjwgttx.html