最近工作比較忙,所以也沒有時間靜下來沉淀一下。
為什么寫博客,更重要的是對自己所學的東西的一種沉淀和記錄吧。
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
。