最近工作比较忙,所以也没有时间静下来沉淀一下。
为什么写博客,更重要的是对自己所学的东西的一种沉淀和记录吧。
1.UI给了你UI设计,文字对齐,比如用户名和密码,很多人选择中间空格输入,但是这样也是不对齐的,但是呢,关于NSString
他还有一个近亲——NSAttributedString
。在NSMutableAttributedString
里有一个方法是<code>- (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)range;</code>其中有很多name
用于修改属性的,比如行间距啊,文章开头空两格啥的,当然,我们用的肯定是调整字据,里面有NSKernAttributeName
这个name,其描述是这样的:"NSNumber containing floating point value, in points; amount to modify default kerning. 0 means kerning is disabled."就是用来调整字间距,如果是0表示禁用这个属性。所以我们只要这样写:
NSMutableAttributedString *str = [[NSMutableAttributedString alloc] initWithString:@"密码:"];
[str addAttribute:NSKernAttributeName value:[NSNumber numberWithInt:20] range:NSMakeRange(0, 1)];
_passwordLabel.attributedText = str;
这样的话密码和用户名就可以对齐了。
2.项目有用到高斯模糊效果,不过之前没用过,于是百度了下,其实也没啥,在iOS8以上的版本里,系统有给相应的UIVisualEffectView
专门用来做高斯模糊。
UIBlurEffect *blur = [UIBlurEffect effectWithStyle:UIBlurEffectStyleDark];
UIVisualEffectView *effectview = [[UIVisualEffectView alloc] initWithEffect:blur];
effectview.frame = CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
effectview.backgroundColor = RGBACOLOR(0, 0, 0, 0.4);
[self addSubview:effectview];
这样就可以做一个高斯模糊的背景效果了,然后在高斯模糊的背景效果上addview就好啦~!
3.关于NSArray
的,每天都在用的一个东西,数组嘛,是吧。但是它包含了很多的API。功能特别强大。在做遍历的时候,简单点的,就是用for循环,但是代码很多。其次就是for in 循环,但是要创建一个参数记录index。但是有一个很高大上的方法:- (void)enumerateObjectsUsingBlock:(void (^)(ObjectType obj, NSUInteger idx, BOOL *stop))block NS_AVAILABLE(10_6, 4_0);
这个可以顺序遍历,也可以逆向遍历,有obj也有index,功能相当强大。而且这个block是同步的,会阻塞当前线程。
4.是关于KVC的,这是iOS里的一种黑魔法,相信很多开发都偏爱KVC。
相对来说,可以直接根据valueForKey
或者ValueForKeyPath
可以去获取想要的值或者改变它。
5.今天遇到了tap手势和tableview和collectionView冲突了,当然tableview和collectionView的cell点击和tap手势有冲突的话,可以在UIGestureRecognizerDelegate
里设置:
-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch {
if([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"] || [[touch.view nextResponder] isKindOfClass:[UICollectionViewCell class]]){
return NO;
}else{
return YES;
}
}
因为这边的collection view上有个subView ,所以可以利用手势的响应链去获取nextResponder
。