根据字数自适应高度的UILabel

- (UILabel *) getLabelHeightFixedWithText: (NSString *) text { UIFont *font = [UIFont boldSystemFontOfSize: 12.0f]; int width = 225, height = 10000; NSMutableDictionary *attrs = [[NSMutableDictionary alloc] init]; [attrs setObject: font forKey: NSFontAttributeName]; CGRect size = [text boundingRectWithSize:CGSizeMake(width, height) options: NSStringDrawingUsesLineFragmentOrigin attributes: attrs context: nil]; UILabel *label = [[UILabel alloc] initWithFrame: CGRectMake(0, 0, size.size.width, size.size.height)]; label.numberOfLines = 0;//一定要设置行数为0 label.font = font; label.lineBreakMode = NSLineBreakByWordWrapping; label.text = (text ? text : @""); label.backgroundColor = [UIColor clearColor]; label.textColor = [UIColor blackColor]; return label; }

JS实现密码加密(base64, md5, sha1)

简介

在编写Web程序时,表单的提交若密码使用明文提交会十分不安全,因此在浏览器端也要对密码进行加密处理。但是若只是在浏览器端处理了,而服务器没有再一次加密,也是不妥当的,因为"中间人"只要获取了浏览器端加密的密码,不需要进行处理也能进行登录。所以我一般的做法是在前端加密一次,在服务器再加密一次。密码加盐(salt)的问题等我先研究下再写一下。而浏览器端加密一般我都用javascript进行加密后再提交。下面是用javascript编写的base64加密,md5加密和sha1加密。使用方法也极其简单,只要在页面内引入相应js文件即可。

贴图库被网信办关闭 官方:解决需要时间

站长之家(ChinaZ.com) 3月4日消息,昨日开始,国内知名图床服务网站贴图库首页和服务器部分地区出现了无法访问的情况。据站长之家了解,贴图库因被检测到非法内容,遭到网信办下令要求域名服务商易名中…

iOS NSString字符串MD5加密

为了使保存的密码更安全, 我们应该实现一个NSString的分类,为密码创建一个MD5的哈希值,而且并把它保存在keychain中;keychain是在设备中保存关键数据的唯一安全的地方。 step1. 新建文件 新建…

NSDictionary含有null导致写文件(writeToFile)失败(豆瓣电影Api返回Json数据中含有null)

之前从接口获取数据后转换为NSDictionary然后执行writeToFile就可以写入文件成功,昨天在使用豆瓣电影Api时,出现了前几条请求的数据写入缓存成功,从某一次请求开始就总是写入不成功。因为我是用gcd方式请求数据的,我还以为是因为线程竞争的问题,但是写文件的原子操作我设置的YES啊。然后写进程锁试一下,然而仍然写入失败,后来我不用gcd以为能好,结果还是写入失败。后来翻资料,说好像如果NSDictionary中有自定义的object类型是不能写入文件的,比如像null,呵呵。但是我找了半天也没找到错误所在,然后也不太影响正常使用,就暂时放在一边了。

结果今天出问题了,之前获取的是电影的列表信息,今天要写电影的详情页信息。写好后不断测试,结果有一条电影,一点进入详情就会崩溃。好了,设置好断点,一步步排查,最后NSLog导演头像的urlString时,找到了问题所在,导演的头像图片的url为null!终于找到了问题所在。那么可以解决了…

我获取了该条目电影的id号,然后在浏览器中获取了他的json数据,果不其然,就是这个电影!《火云端》!

含有null

然而我并没有想到有这么多null

经过百度,好像要写文件,NSDictionary里面的object必须是NSString,NSData,NSNumber,NSDate,NSArray,NSDictionary中的数据类型。不过我知道,含有null是万万不能的,混蛋。

解决方案:NSDictionary -> NSDate

NSDictionary写文件之前,可以把它转换成NSData类型的数据,再执行写文件操作。 从文件读取时把读取出的NSData转换为NSDictionary就可以了。

用到的方法

NSDictionary -> NSData:

NSData *data = [NSKeyedArchiver archivedDataWithRootObject:dictionary];

NSData -> NSDictionary:

NSDictionary *dictionary = (NSDictionary *)[NSKeyedUnarchiver unarchiveObjectWithData:data];

昨天的问题解决了,这样写时候,每一次都能写入缓存文件成功。

今天的涉及到NSDictionary值的获取的部分,我都加了一个判断 if([theValue isKindOfClass:[NSNull class]]),然后进行相应处理就可以了。

这个时iOS的一个归档方法,不仅仅能归档null自定义的类型也是可以的。具体可以参见小白猪jianjian的博客-使用NSKeyedArchiver归档

纯代码高仿网易新闻客户端两个scrollView联动(一):设置基本的界面布局

自己再开发app过程中遇到了这样那样的需求,其中有一项是新闻页面,需要两个scrollView联动,上面的scrollView是新闻类型,下面scrollView是tableView新闻标题。开发过程中我全部都是用代码布局的,因为自己是新手,不知道到底是用代码写比较方便还是用storyBoard更方便,但是感觉手写代码适应屏幕上更容易上手吧。需求实现之后现在拿出来简单整理一下,方便自己日后查看,也给后来者以参考。因为刚刚开始学,用到的都是些简单的方法,也可能会出错,如果有什么不足,请留言给我指出。谢谢~

UIImageView更换图片时渐隐渐现

实现原理十分简单,使用UIImageView的透明度即可。然后在动画中完成。 alpha = 1 为全透明。 运行图例: 实现代码: //图片渐隐渐现 self.backgroundView.alpha = 0.7; [UIView animateWithDuration:0.5 animations:^{ self.backgroundView.alpha = 1; self.backgroundView.image = [UIImage imageNamed:@"weather_bg_02.jpg"]; }]; 后来我知道了可以用更好的方法实现, 后续会有更…