剛開始工作的朋友有沒有這樣的體會我擦 UI 給的圖啥玩應(yīng)這圖給的 顏色 #fffff 什么鬼 (類似下面這種) 而我們IOS 通常使用的 都是RGB 這怎么搞 這里我就給大家分享一個簡單的解決方法.拿過去就能使用
創(chuàng)建一個類擴展 吧下面的方法拷貝進去 就可以直接使用了,使用時調(diào)用下面方法把UI 給你的值 通過字符串的凡是穿進去就解決了,如果你不喜歡做類擴展直接使用也沒有任何問題
#import <UIKit/UIKit.h>
@interface UIColor (hexColor)
// 顏色轉(zhuǎn)換:iOS中(以#開頭)十六進制的顏色轉(zhuǎn)換為UIColor(RGB)
+ (UIColor *) colorWithHexString: (NSString *)color;
@end
#import "UIColor+hexColor.h"
@implementation UIColor (hexColor)
+ (UIColor *) colorWithHexString: (NSString *)color
{
NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
// String should be 6 or 8 characters
if ([cString length] < 6) {
return [UIColor clearColor];
}
// 判斷前綴
if ([cString hasPrefix:@"0X"])
cString = [cString substringFromIndex:2];
if ([cString hasPrefix:@"#"])
cString = [cString substringFromIndex:1];
if ([cString length] != 6)
return [UIColor clearColor];
// 從六位數(shù)值中找到RGB對應(yīng)的位數(shù)并轉(zhuǎn)換
NSRange range;
range.location = 0;
range.length = 2;
//R、G秀又、B
NSString *rString = [cString substringWithRange:range];
range.location = 2;
NSString *gString = [cString substringWithRange:range];
range.location = 4;
NSString *bString = [cString substringWithRange:range];
// Scan values
unsigned int r, g, b;
[[NSScanner scannerWithString:rString] scanHexInt:&r];
[[NSScanner scannerWithString:gString] scanHexInt:&g];
[[NSScanner scannerWithString:bString] scanHexInt:&b];
return [UIColor colorWithRed:((float) r / 255.0f) green:((float) g / 255.0f) blue:((float) b / 255.0f) alpha:1.0f];
}
@end
顏色的問題解決了,我們再來一個圖片壓縮的問題,之前朋友寫了個APP 首頁圖片展示的時候圖片跟 ImageView 展示出來的效果特別別扭,主要問題就是imageView和圖片比例不協(xié)調(diào),展示的圖片被壓縮了,這種情況還通常出現(xiàn)在用戶頭像選擇之類的
應(yīng)用場景.這個問題很好解決只需要兩行代碼就可以搞定
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 400, 200, 200)];
[self.view addSubview:imageView];
imageView.image = [UIImage imageNamed:@"33684C9C-692E-47A8-87C6-3E1F3E64BA5C"];
這是我們正常展示圖片的時候的使用方法,他展示出來的效果是這個樣子的
然后我們?yōu)檫@基礎(chǔ)上再添加兩行代碼
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 400, 200, 200)];
[self.view addSubview:imageView];
imageView.image = [UIImage imageNamed:@"33684C9C-692E-47A8-87C6-3E1F3E64BA5C"];
// 就是這兩行
imageView.contentMode = UIViewContentModeScaleAspectFill;
imageView.clipsToBounds=YES;
效果如下
微信用戶頭像選擇的模式跟這個方式一模一樣,基本可以滿足我們的功能需求!
有沒有產(chǎn)品要求你做那種獲取圖片RGB值的功能,我們的一個智能等項目就是這樣的,要給燈發(fā)送RGB值改變燈箱顏色.這個RGB怎么來的 UI 給你圖 到了圖上對應(yīng)的位置要發(fā)送對應(yīng)的RGB.這個功能可以理解為獲取圖片的RGB
使用下面這段代碼就可以解決這個問題,返回的就是顏色值使用時直接把點傳入這個方法中就可以.
- (UIColor *)colorOfPoint:(CGPoint)point {
unsigned char pixel[4] = {0};
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = CGBitmapContextCreate(pixel, 1, 1, 8, 4, colorSpace, (CGBitmapInfo)kCGImageAlphaPremultipliedLast);
CGContextTranslateCTM(context, -point.x, -point.y);
[self.imageView.layer renderInContext:context];
CGContextRelease(context);
CGColorSpaceRelease(colorSpace);
UIColor *color = [UIColor colorWithRed:pixel[0]/255.0 green:pixel[1]/255.0 blue:pixel[2]/255.0 alpha:pixel[3]/255.0];
self.view.backgroundColor = color;
return color;
}
Xcode7 升級后發(fā)現(xiàn)此前所有的項目都無法編譯了涤妒,報錯情況不一,
有些為:
-fembed-bitcode is not supported on versions of iOS prior to 6.0
有些為:
linker command failed with exit code 1
經(jīng)過反復(fù)嘗試迹淌,找到了問題的解決辦法屡江。
解決方法:選擇項目文件沟优,從右側(cè)選擇“Build Settings”標簽,在構(gòu)建設(shè)置的長長的列表中找到“Build Options”--〉“Enable Bitcode”病苗,將其從YES改為NO疗垛。也可以在搜索位置輸入Bitcode,Xcode會自動列出“Enable Bitcode”選項硫朦,將其從YES改為NO继谚。
-------------------------- 更新中 ---------------------------
這篇技術(shù)文比較雜包含了很多常見的問題,以及具體的解決辦法,希望看到的朋友點個贊支持我繼續(xù)下去
有沒有朋友會經(jīng)常用到[NSUserDefaults standardUserDefaults](類似免登陸的賬號密碼存儲) 進行一些存儲,當我們不需要的時候是否有過清除這些數(shù)據(jù).這個跟大家分享的就是[NSUserDefaults standardUserDefaults] 的存儲移除
NSUserDefaults *defs = [NSUserDefaults standardUserDefaults];
[defs setObject:@"hello world" forKey:@"我勒個去"];
NSLog(@"____ %@ ______",[defs objectForKey:@"我勒個去"]);
NSDictionary *dict = [defs dictionaryRepresentation];
if (dict[@"我勒個去"]) {
[defs removeObjectForKey:@"我勒個去"];
}
NSLog(@"____ %@ ______",[defs objectForKey:@"我勒個去"]);