1. 程式人生 > >iOS 開發之獲取手機殼的顏色

iOS 開發之獲取手機殼的顏色

從刷爆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
來源:書繁簡
繁簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處