1.可變數(shù)組中是不能添加除了對象以外的如CGFloat NSinteger double類型的,我們應該在用 addObject:添加這些對象以外的時候注意
[_all_Money addObject: @([_array[j] ExclusivePrice] * [_array[j] count])];
2.數(shù)組中內(nèi)部元素求和還有求平均值
NSArray *testArray = [NSArrayarrayWithObjects:@"2.0", @"2.3", @"3.0",@"4.0", nil];
NSNumber *sum = [testArrayvalueForKeyPath:@"@sum.floatValue"]
NSNumber *avg= [testArray valueForKeyPath:@"@avg.floatValue"];
3.數(shù)組中替換(例子)
我想要在NSMutableArray替換一個數(shù)組對象间狂,從_alertsArray獲取了oldArray蜒简,然后修改值藐鹤,用newArray替換oldArray施掏,但是沒實現(xiàn)傍睹。
NSArray *oldArray=(NSArray*)[_alertsArray objectAtIndex:[indexPath row]];
NSMutableArray *newArray = [[NSMutableArray alloc] initWithArray:oldArray copyItems:YES];
[newArray replaceObjectAtIndex:3 withObject:@"YES"];
[_alertsArray replaceObjectAtIndex:[indexPath row] withObject:newArray];
解決辦法
NSMutableArray *newArray = [_alertsArray mutableCopy];
[newArray replaceObjectAtIndex:3 withObject:@"YES"];
_alertsArray = newArray;
4.textfield 限定字數(shù),適用于中英文混合(kMaxLength最大字數(shù))
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFiledEditChanged:)
name:@"UITextFieldTextDidChangeNotification"
object:_PlanText];
-(void)textFiledEditChanged:(NSNotification *)obj{
UITextField *textField = (UITextField *)obj.object;
NSString *toBeString = textField.text;
NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; // 鍵盤輸入模式
if ([lang isEqualToString:@"zh-Hans"]) { // 簡體中文輸入憔杨,包括簡體拼音趁啸,健體五筆巨缘,簡體手寫
UITextRange *selectedRange = [textField markedTextRange];
//獲取高亮部分
UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
// 沒有高亮選擇的字尿赚,則對已輸入的文字進行字數(shù)統(tǒng)計和限制
if (!position) {
if (toBeString.length > kMaxLength) {
textField.text = [toBeString substringToIndex:kMaxLength];
[MBProgressHUD showInfoMessage:@"只能可以輸入12個字"];
}
}
// 有高亮選擇的字符串买决,則暫不對文字進行統(tǒng)計和限制
else{
}
}
// 中文輸入法以外的直接對其統(tǒng)計限制即可,不考慮其他語種情況
else{
if (toBeString.length > kMaxLength) {
textField.text = [toBeString substringToIndex:kMaxLength];
}
}
}
5.數(shù)組去重
1.利用NSDictionary的AllKeys(AllValues)方法
可以將NSArray中的元素存入一個字典吼畏,然后利用AllKeys或者AllValues取得字典的所有鍵或值督赤,這些鍵或值都是去重的。
示例代碼:
NSArray *arr = @[@111,@222,@111];
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
for (NSNumber *number in arr) {
[dict setObject:number forKey:number];
}
NSLog(@"%@",[dict allValues]);
2013-05-21 12:03:49.449 test1[4377:c07] (
111,
222
)
2.利用NSSet的AllObjects方法
這種方法更快泻蚊,利用NSSet不會添加重復元素的特性躲舌。不過去重的數(shù)組沒有進行排序,如果需要排序性雄,可以使用NSSortDescriptor類没卸。
示例代碼:
NSArray *arr = @[@111,@222,@111];
NSSet *set = [NSSet setWithArray:arr];
NSLog(@"%@",[set allObjects]);
2013-05-21 12:06:26.508 test1[4547:c07] (
111,
222
)
3.排序的去重
很多時候可能會遇到需要去除NSArray重復的元素羹奉,用了很多方法。
最方便快捷的是NSSet.但是NSSet去重后有時候數(shù)組元素的順序會
打亂约计。于是換了另外一種方法如下:
NSMutableArray *categoryArray = [[NSMutableArray alloc] init];
for (unsigned i = 0; i < [nameArray count]; i++){
if ([categoryArray containsObject:[nameArray objectAtIndex:i]] == NO){
[categoryArray addObject:[nameArray objectAtIndex:i]];
}
}
6.解決UICollectionView的Cell復用引起的布局混亂問題
1. 首先創(chuàng)建一個可變數(shù)組诀拭,用來存放Cell的唯一標示符
// 用來存放Cell的唯一標示符
@property (nonatomic, strong) NSMutableDictionary *cellDic;
#warning 別忘了初始化喲
self.cellDic = [[NSMutableDictionary alloc] init];
2. 在cellForItemAtIndexPath:這個方法中作相應的一些處理即可,代碼如下
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
// 每次先從字典中根據(jù)IndexPath取出唯一標識符
NSString *identifier = [_cellDic objectForKey:[NSString stringWithFormat:@"%@", indexPath]];
// 如果取出的唯一標示符不存在煤蚌,則初始化唯一標示符耕挨,并將其存入字典中,對應唯一標示符注冊Cell
if (identifier == nil) {
identifier = [NSString stringWithFormat:@"%@%@", DayCell, [NSString stringWithFormat:@"%@", indexPath]];
[_cellDic setValue:identifier forKey:[NSString stringWithFormat:@"%@", indexPath]];
// 注冊Cell
[self.collectionView registerClass:[CalendarCollectionViewCell class] forCellWithReuseIdentifier:identifier];
}
CalendarCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
// 此處可以對Cell做你想做的操作了...
return cell;
}
7.關于UIView的autoresizingMask屬性的研究
enum {
UIViewAutoresizingNone = 0,
UIViewAutoresizingFlexibleLeftMargin = 1 << 0,
UIViewAutoresizingFlexibleWidth = 1 << 1,
UIViewAutoresizingFlexibleRightMargin = 1 << 2,
UIViewAutoresizingFlexibleTopMargin = 1 << 3,
UIViewAutoresizingFlexibleHeight = 1 << 4,
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
UIViewAutoresizingNone就是不自動調(diào)整尉桩。
UIViewAutoresizingFlexibleLeftMargin 自動調(diào)整與superView左邊的距離筒占,保證與superView右邊的距離不變。
UIViewAutoresizingFlexibleRightMargin 自動調(diào)整與superView的右邊距離蜘犁,保證與superView左邊的距離不變翰苫。
UIViewAutoresizingFlexibleTopMargin 自動調(diào)整與superView頂部的距離,保證與superView底部的距離不變这橙。
UIViewAutoresizingFlexibleBottomMargin 自動調(diào)整與superView底部的距離奏窑,也就是說,與superView頂部的距離不變屈扎。
UIViewAutoresizingFlexibleWidth 自動調(diào)整自己的寬度埃唯,保證與superView左邊和右邊的距離不變。
UIViewAutoresizingFlexibleHeight 自動調(diào)整自己的高度助隧,保證與superView頂部和底部的距離不變筑凫。
UIViewAutoresizingFlexibleLeftMargin |UIViewAutoresizingFlexibleRightMargin 自動調(diào)整與superView左邊的距離滑沧,保證與左邊的距離和右邊的距離和原來距左邊和右邊的距離的比例不變并村。比如原來距離為20,30滓技,調(diào)整后的距離應為68哩牍,102,即68/20=102/30令漂。
其它的組合類似膝昆。
最后送上一波不錯的三方庫
1.在用戶第一次使用app時候通常會遇到新功能引導頁面!,在這里小編給大家介紹另外一種通過添加“指導標記”到界面來讓用戶快速熟悉你的APP第三方庫!(http://t.cn/RU4SBqo) 一共有5種不同的樣式哦~希望可以給大家做項目時候帶來一些靈感
2.一個app往往有很多界面,而界面之間的跳轉(zhuǎn)也就是對應控制器的跳轉(zhuǎn),控制器的跳轉(zhuǎn)一般有兩種情況 push 或者 modal,push 和 modal 的默認效果是系統(tǒng)提供的,但也可以自定義.有興趣了解一下自定義的童鞋可以看這篇,iOS動畫指南 - 6.可以很酷的轉(zhuǎn)場動畫.
3.一行代碼快速集成tableView上頭部視圖縮放圖片叠必,并且不會占用tableView的頭部視圖荚孵,無侵入性,全用runtime實現(xiàn)的纬朝。http://bbs.520it.com/forum.php?mod=viewthread&tid=1689&page=1&extra=#pid14886
4.Self-Manager 源于我們團隊內(nèi)部的黑話收叶,“誒?你剛去的創(chuàng)業(yè)公司有幾個 iOS 開發(fā)肮部痢判没?” “就我一個” “靠蜓萄,你這是 Self-Manager 啊”http://blog.sunnyxx.com/2015/12/19/self-manager-pattern-in-ios/
最近會不斷推出一些輪子,這次寫了一個控件澄峰,類似QQ表情鍵盤嫉沽,鍵盤布局,根據(jù)coderwhy提供的思路搭建出來的俏竞。http://bbs.520it.com/forum.php?mod=viewthread&tid=1787
一個app往往有很多界面,而界面之間的跳轉(zhuǎn)也就是對應控制器的跳轉(zhuǎn),控制器的跳轉(zhuǎn)一般有兩種情況 push 或者 modal,push 和 modal 的默認效果是系統(tǒng)提供的,但也可以自定義.有興趣了解一下自定義的童鞋可以看這篇,iOS動畫指南 - 6.可以很酷的轉(zhuǎn)場動畫.
5.判斷版本是否升級https://github.com/ArtSabintsev/Harpy
6.連不上網(wǎng),tableview小游戲https://github.com/dasdom/BreakOutToRefresh
7.用戶指導,按步驟操作https://github.com/ephread/Instructions
8.用戶習慣操作三十天連續(xù)使用圖標變換https://github.com/Ramotion/adaptive-tab-bar
9.YYKit 是一組龐大绸硕、功能豐富的 iOS 組件https://github.com/ibireme/YYKit
10.越來越多的應用為每一個 VC 設置單獨的導航條,而不是之前那樣使用一個全局統(tǒng)一的導航條胞此,因為不同的 VC 有不同的視覺樣式臣咖,前一個是藍色的,后一個也許要做成紅色漱牵、透明夺蛇,或者干脆沒有導航條。https://github.com/rickytan/RTRootNavigationController