IOS 零散问题杂谈及解决办法
刚开始工作的朋友有没有这样的体会我擦 UI 给的图啥玩应这图给的 颜色 #fffff 什么鬼 (类似下面这种) 而我们IOS 通常使用的 都是RGB 这怎么搞 这里我就给大家分享一个简单的解决方法.拿过去就能使用
![](https://img.haomeiwen.com/i1519934/f95602660fb1f4cf.png)
创建一个类扩展 吧下面的方法拷贝进去 就可以直接使用了,使用时调用下面方法把UI 给你的值 通过字符串的凡是穿进去就解决了,如果你不喜欢做类扩展直接使用也没有任何问题
#import <UIKit/UIKit.h>
@interface UIColor (hexColor)
// 颜色转换:iOS中(以#开头)十六进制的颜色转换为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];
// 从六位数值中找到RGB对应的位数并转换
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和图片比例不协调,展示的图片被压缩了,这种情况还通常出现在用户头像选择之类的
应用场景.这个问题很好解决只需要两行代码就可以搞定
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 400, 200, 200)];
[self.view addSubview:imageView];
imageView.image = [UIImage imageNamed:@"33684C9C-692E-47A8-87C6-3E1F3E64BA5C"];
这是我们正常展示图片的时候的使用方法,他展示出来的效果是这个样子的
![](https://img.haomeiwen.com/i1519934/3e63e442b82386b4.png)
然后我们为这基础上再添加两行代码
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;
效果如下
![](https://img.haomeiwen.com/i1519934/b9b278c82ff52877.png)
微信用户头像选择的模式跟这个方式一模一样,基本可以满足我们的功能需求!
有没有产品要求你做那种获取图片RGB值的功能,我们的一个智能等项目就是这样的,要给灯发送RGB值改变灯箱颜色.这个RGB怎么来的 UI 给你图 到了图上对应的位置要发送对应的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;
}
![](https://img.haomeiwen.com/i1519934/91187a3dc83477a0.gif)
Xcode7 升级后发现此前所有的项目都无法编译了,报错情况不一,
有些为:
-fembed-bitcode is not supported on versions of iOS prior to 6.0
有些为:
linker command failed with exit code 1
经过反复尝试,找到了问题的解决办法。
解决方法:选择项目文件,从右侧选择“Build Settings”标签,在构建设置的长长的列表中找到“Build Options”--〉“Enable Bitcode”,将其从YES改为NO。也可以在搜索位置输入Bitcode,Xcode会自动列出“Enable Bitcode”选项,将其从YES改为NO。
-------------------------- 更新中 ---------------------------
这篇技术文比较杂包含了很多常见的问题,以及具体的解决办法,希望看到的朋友点个赞支持我继续下去
有没有朋友会经常用到[NSUserDefaults standardUserDefaults](类似免登陆的账号密码存储) 进行一些存储,当我们不需要的时候是否有过清除这些数据.这个跟大家分享的就是[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:@"我勒个去"]);
![](https://img.haomeiwen.com/i1519934/1dfeee52b4e76f51.png)