关于UIPreviewAction字体颜色的黑魔法

**** 在用到3D-Touch的时候,想到了UIPreviewAction随性就写了一下,但是看到字体的颜色不能修改,这时候就想到了用一个运行时尝试修改一下,没想到还真成功了.下面上代码 ****

@property (nonatomic,strong) UIColor *tintColor; /**< 统一按钮样式 不写系统默认的蓝色*/

- (UIColor *)tintColor {

return objc_getAssociatedObject(self, @selector(tintColor));
}
- (void)setTintColor:(UIColor *)tintColor {

unsigned int count = 0;
Ivar *ivars = class_copyIvarList([UIPreviewAction class], &count);
for(int i = 0;i < count;i ++){
    
    Ivar ivar = ivars[i];
    NSString *ivarName = [NSString stringWithCString:ivar_getName(ivar) encoding:NSUTF8StringEncoding];
    NSLog(@"%@",ivarName);
    //标题颜色
    if ([ivarName isEqualToString:@"_color"] && tintColor) {
        
        [self setValue:tintColor forKey:@"color"];
    }
}

free(ivars);


objc_setAssociatedObject(self, @selector(tintColor), tintColor, OBJC_ASSOCIATION_RETAIN_NONATOMIC);

}

这时候在外部调用

#pragma mark -- /*3DTouch-Delegate*/ 
- (NSArray<id<UIPreviewActionItem>> *)previewActionItems {

    __weak typeof(self) weakSelf = self;

    UIPreviewAction *saveAction = [UIPreviewAction actionWithTitle:@"保存到相册" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
    
        UIImageWriteToSavedPhotosAlbum(weakSelf.imageView.image, weakSelf, @selector(image:didFinishSavingWithError:contextInfo:),nil);
    
}];
    saveAction.tintColor = [UIColor blackColor];
    
    UIPreviewAction *cancellAction = [UIPreviewAction actionWithTitle:@"取消" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * _Nonnull action, UIViewController * _Nonnull previewViewController) {
    
}];
    cancellAction.tintColor = [UIColor blackColor];
    return @[saveAction,cancellAction];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,100评论 25 708
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,759评论 18 399
  • 导读:Android面试中高频率出现的题都在这了。试题大部分从互联网收集,博主下了一番功夫进行梳理总结,难免有不足...
    Maat红飞阅读 55,832评论 61 844
  • 亓夫 儿子有很多玩具车 不同的颜色 不同的尺寸 不同的形状 不同的功能 他最喜爱的那一款 总是爱不释手 它不是跑得...
    邵亓夫阅读 268评论 2 1
  • 你们的打赏,给了我很多的鼓励与动力。虽然你们都没有留下足迹,但是我知道这其中一定有 你! 写东西在我看来,并不是一...
    罗兄阅读 280评论 0 0