iOS 開發之獲取手機殼的顏色
阿新 • • 發佈:2018-11-23
從刷爆IT圈的一個事件說起:
新聞:某網際網路公司產品經理提出一個需求 - 要求APP開發人員做到軟體根據使用者的手機殼改變軟體的主題顏色。
圖片來源於網路
什麼他媽的!還有這操作,PM,你過來,保證不打屎你。
圖片來源於網路
結果出現了。傳送中出現的“親熱”的肢體接觸事件(PS:平安產險的伙食一定很豐盛額,䅰〜)。
笑話看過了,要認真的研讀下這個需求了:根據手機殼顏色來設定應用主題色。
很多“牛(KAN)逼(KE)”的技術團隊給出了多個解決方案:
圖片來源於網路
圖片來源於網路
那麼除了那麼多穿戴裝置及高階的天文組加入外,我們純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]; }
效果如下:
圖片來源於網路
文章來源:http://www.cnblogs.com/ZachRobin/p/9407029.html
作者:Clark_new
連結:HTTPS://www.jianshu.com/p/3e2ebb67a25f
來源:書繁簡
繁簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。