从刷爆 IT 圈的一个事件说起:

  新闻:某互联网公司产品经理提出一个需求--要求APP开发人员做到软件根据用户的手机壳改变软件的主题颜色。

  

  What Fuck!还有这操作,PM,你过来,保证不打屎你。

  

  结果出现了.mov中出现的“亲热”的肢体接触事件(PS:平安产险的伙食一定很丰盛。额,䅰~)。

  笑话看过了,要认真的研读下这个需求了:根据手机壳颜色来设置应用主题色。

  很多“牛(kan)逼(ke)”的技术团队给出了多个解决方案:

  1、

  2、

  3、.......

  那么除了那么多穿戴设备及高端的天文组加入外,我们纯APP开发人员怎么实现这个需求?可以考虑换个思路来实现这个需求:通过手机摄像头拍照或相册选择手机壳照片,然后提取照片的主色调或者照片虚化设置背景图片(如酷我音乐那种)。当然如果PM认为这种方法太笨,想要智能的那种,我建议公司多给PM申请一份保险【捂脸笑】.gif。

  假定PM原定想的是获取手机出厂时颜色(黑,银,土豪金)。

  代码如下:

#warning 该方法是私有 API,上线会被拒
UIDevice *device = [UIDevice currentDevice];
SEL selector = NSSelectorFromString(@"deviceInfoForKey:");
if (![device respondsToSelector:selector]) {
selector = NSSelectorFromString(@"_deviceInfoForKey:");
}
if ([device respondsToSelector:selector]) {
IMP imp = [device methodForSelector:selector];
NSString *(*func)(id, SEL, NSString *) = (void*)imp;
NSString *deviceColor = func(device, selector, @"DeviceColor");
NSString *deviceEnclosureColor = func(device, selector, @"DeviceEnclosureColor");
NSLog(@"deviceColor -- >%@\n deviceEnclosureColor===>%@ ", deviceColor, deviceEnclosureColor); }

  可获得手机外壳颜色。

  如果产品指获取手机购买的外壳颜色,可以使用拍照,获取图片的平均颜色值。

  找到一个不错的开源项目:SOZOChromoplast,可直接使用。

  使用时:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary<NSString *,id> *)info
{
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
_imageView.image = image;
_chromoplast = [[SOZOChromoplast alloc] initWithImage:image];
self.view.backgroundColor = _chromoplast.dominantColor;
[picker dismissViewControllerAnimated:YES completion:nil];
}

  效果如下:

  

  

iOS 开发之提取图片的主色调用于更换应用主题颜色的更多相关文章

  1. iOS开发之--最简单的导航按钮更换方法/导航颜色的改变

    有很多时候,我们需要用到导航,那么更换导航的时候,是在那用那修改,还是自定义一个导航,或者是声明一个代理方法,经过查资料和对导航属性的一些了解,用一种方法最为简单,就是在入口类里面添加一个方法,调用偏 ...

  2. iOS开发需要哪些图片?

    1.产品设计图 可以以6的长宽比 750*1134来设计.这些图片用于描述app是什么样子的,这是app开发人员的开发参考. 2.产品切图 将设计师将设计稿切成可以用来开发的图 颜色值 iOS颜色值取 ...

  3. iOS开发-仿微信图片分享界面实现

    分享功能目前几乎已成为很多app的标配了,其中微信,微博等app的图片分享界面设计的很棒,不仅能够展示缩略图,还可以预览删除.最近我在做一款社交分享app,其中就要实现图文分享功能,于是试着自行实现仿 ...

  4. iOS开发之多图片无缝滚动组件封装与使用

    经常有园友会问"博主,有没有图片无限滚动的Demo呀?", 正儿八经的图片滚动的Demo我这儿还真没有,今天呢就封装一个可以在项目中直接使用的图片轮播.没看过其他iOS图片无限轮播 ...

  5. iOS开发——高级篇——图片轮播及其无限循环效果

    平时APP中的广告位.或者滚动的新闻图片等用到的就是图片轮播这种效果,实现方式主要有两种,一种是ScrollView+ImageView,另一种则是通过CollectionView,今天总结的是Scr ...

  6. IOS开发中@2x图片等适应不同分辨率手机

    开发中,例如: nanshanImage.image=[UIImage imageNamed:@'index_pic.png']; 在项目中还保存中index_pic@2x.png的图片,此图为了只适 ...

  7. iOS开发-UISlider改变图片透明度

    拖动条是通过滑块的位置来标识数值,而且拖动条允许用户拖动滑块来改变值.因此,拖动条通常用于对系统的某种数值进行调节,如调节亮度,透明度,音量等. 一.属性介绍 @property(nonatomic) ...

  8. iOS开发-简单的图片查看器

    现在你只要拿着手机,不管你Android还是iOS,新闻类的App不可避免都有一个功能就是图片查看,做个专题,查看一下内容,App Store中也有专门针对图片浏览的App,鉴于目前所知有限,无法做到 ...

  9. ios开发清除SDWebImage图片缓存

    一:一般在实际的项目应用中都会用到第三方框架SDWebImage去下载缓存图片,但在ios开发应用中,常常涉及对SDWebImage缓存图片的清除.本文所列出代码即是对SDWebImage缓存图片的清 ...

随机推荐

  1. 【转载】各种SQL在PIG中实现

    转自:http://guoyunsky.iteye.com/blog/1317084 我这里以Mysql 5.1.x为例,Pig的版本是0.8 同时我将数据放在了两个文件,存放在/tmp/data_f ...

  2. HDU1024 Max Sum Plus Plus(dp)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=1024 #include<iostream> #include<vector> #i ...

  3. electron聊天室|vue+electron-vue仿微信客户端|electron桌面聊天

    一.项目概况 基于Electron+vue+electron-vue+vuex+Nodejs+vueVideoPlayer+electron-builder等技术仿制微信电脑端界面聊天室实例,实现消息 ...

  4. es2.0的语法学习

    确定文档和查询有多么相关的过程被称为打分(scoring):将查询作为输入,使用不同的手段来确定每一篇文档的得分,将每一个因素最后通过公式综合起来,返回该文档的最终得分.这个综合考量的过程,就是我们希 ...

  5. javasE--基础部分--线程

    Day23 本单元目标 一.线程的相关概念  二.线程的创建和启动★ 三.线程的停止 四.线程的常用方法 五.线程的生命周期★  六.线程的同步 七.线程的通信 八.线程的创建方式三 九.线程的创建方 ...

  6. mybatis(六):设计模式 - 适配器模式

  7. array.find()方法

    //array.find(function(currentValue, index, arr),thisValue) 方法说明 let tempArray = [ {"key":1 ...

  8. L2-3 名人堂与代金券

    题解 这题的话,每一个人都要占一个排名,即使排名并列了. 对于最后一个排名来说,即使人数超过了指定的k,也要加入. 代码 #include <bits/stdc++.h> using na ...

  9. 题解【UVA839】天平 Not so Mobile

    Description Input Output Examples Input 1 0 2 0 4 0 3 0 1 1 1 1 1 2 4 4 2 1 6 3 2 Output YES Transla ...

  10. Java 浮点数精度控制

    1.String.format​(String format,Object… args) Java中用String.format()来控制输出精度, format参数用来设置精度格式, args参数代 ...