您好,登錄后才能下訂單哦!
1.如何用NSLog輸出NSRange,CGRect等結(jié)構(gòu)體
NSString 中的方法:
NSStringFromCGPoint
NSStringFromCGSize
NSStringFromCGRect
NSStringFromCGAffineTransform
NSStringFromUIEdgeInsets
如:NSLog(@"rect1: %@", NSStringFromCGRect(rect1));
2.如何在navigationviewcontroller中,pop到之前不同的viewcontroller(push過的viewcontroller)?
每當(dāng)我們push到一個viewcontroller時,就會把這個viewcontroller的實例保存到NSArray里,通過array可以獲取到任何一個viewcontroller。
NSArray *viewControllers=[self.navigationControllerviewControllers]; UIViewController *controller=[viewControllers objectAtIndex:1]; [self.navigationControllerpopToViewController:controller animated:YES];
3,圖片模糊化處理
+(UIImage *)scale:(UIImage *)p_w_picpath toSize:(CGSize)size { UIGraphicsBeginImageContext(size); [p_w_picpath drawInRect:CGRectMake(0, 0, size.width, size.height)]; UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return scaledImage; }
4.如何使用 NSNotificationCenter 在viewcontroller之間進(jìn)行傳值?
簡單點的來,兩個界面間傳值,直接上代碼了:
sendViewcontroller.m
//SettingViewController :接受值的viewcontroller SettingViewController *setting = [[SettingViewController alloc] init]; [[NSNotificationCenter defaultCenter] addObserver:setting selector:@selector(received:) name:@"msetting" object:nil]; NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:@"user",@"type", nil]; [[NSNotificationCenter defaultCenter] postNotificationName:@"msetting" object:dict]; [self.navigationController pushViewController:setting animated:YES]; [setting release];
SettingViewController.m(接收值的viewcontroller)
-(void)received:(NSNotification *)notification{ id data = [notification object]; NSLog(@"received data: %@",data); }
這樣就實現(xiàn)了基本的使用,跟delegate類似,注意 addObserver時,需要寫目標(biāo)viewcontroller的實例,而不是self。
5.通過系統(tǒng)自帶的NSPredicate使用正則表達(dá)式。(在TextField中)
NSString *regex =[NSString stringWithFormat:@"^1(3[4-9]|5[012789]|8[2378]|47)\\d{8}$"]; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex]; BOOL isMatch = [predicate evaluateWithObject:editPhoneField.text];
6.如何限制UITextField輸入長度(監(jiān)聽textField文本變化的事件)
1、實現(xiàn)UITextFieldDelegate協(xié)議;
2、實現(xiàn)textField:shouldChangeCharactersInRange:replacementString:方法;
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ int kMaxLength = 11; NSInteger strLength = textField.text.length - range.length + string.length; //輸入內(nèi)容的長度 - textfield區(qū)域字符長度(一般=輸入字符長度)+替換的字符長度(一般為0) return (strLength <= kMaxLength); }
如上代碼,如果我們簡單的這樣寫: if(range.location<=11) return 或是 if (textfield.text.length>=11) 這樣雖然也能限制位數(shù)為11位,但是如果通過放大鏡把光標(biāo)切換到之前的位數(shù)后,你照樣可以輸入,并且還會導(dǎo)致輸入11位后,鍵盤上的退格(X鍵)無法使用,原因是:我們在location到達(dá)11位后,返回了NO,鍵盤無法相應(yīng):添加,修改,刪除。這是很嚴(yán)重的。所以照著我上面的。
方法解讀:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
功能:
把textField中位置為range的字符串替換為string字符串;
此函數(shù)在textField內(nèi)容被修改時調(diào)用;
返回值:
YES,表示修改生效;NO,表示不做修改,textField的內(nèi)容不變。
參數(shù)說明:
textField:響應(yīng)UITextFieldDelegate協(xié)議的UITextField控件。
range: UITextField控件中光標(biāo)選中的字符串,即被替換的字符串;
range.length為0時,表示在位置range.location插入string。
string: 替換字符串; string.length為0時,表示刪除。
7.使用ios5.0以后的一個方法自定義table View Cell
UINib *nib = [UINib nibWithNibName:@"TvWeiboCell" bundle:nil]; [tableView registerNib:nib forCellReuseIdentifier:CellIdentifier];
8.獲取全局的Delegate對象,這樣我們可以調(diào)用這個對象的方法和變量
[(MyAppDelegate*)[[UIApplication sharedApplication] delegate] MyMethodOrMyVariable];
9.獲取截屏
- (UIImage *)getScreenShot { UIGraphicsBeginImageContext(self.view.bounds.size); [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *p_w_picpath = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return p_w_picpath; }
10.貨幣格式轉(zhuǎn)
方法一:
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init]; [numberFormatter setGroupingSeparator:@","]; [numberFormatter setGroupingSize:3]; [numberFormatter setUsesGroupingSeparator:YES]; [numberFormatter setDecimalSeparator:@"."]; [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle]; [numberFormatter setMaximumFractionDigits:2]; NSString *theString = [numberFormatter stringFromNumber:[NSNumber numberWithDouble:1008977.72]];
方法二:
-(NSString*)showPrice:(NSString*)price { NSMutableString* price1 =[[NSMutableString alloc]initWithString: price]; if (price.length>3) { for (int i=0; i<(price.length-1)/3; i++) { [price1 insertString:@"," atIndex:(price.length -(i+1)*3)]; } } return price1; }
11.ios 禁用多個按鈕同時按下的效果(解決bug)
把那些不能同時點下的按鈕或者視圖設(shè)置一下即可:
[view setExclusiveTouch:YES];
12.打亂數(shù)組元素的順序
-(void)Shuffle:(NSMutableArray*) arr { for (int i = 0; i < arr.count; ++i) { int n = (arc4random() % arr.count - i) + i; [arr exchangeObjectAtIndex:i withObjectAtIndex:n]; } }
可以把它弄成數(shù)組的類目。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。