91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關于IOS開發的一些有用的代碼片段(別人總結和自己的)

發布時間:2020-07-18 18:21:22 來源:網絡 閱讀:566 作者:陳破虜 欄目:移動開發


1.如何用NSLog輸出NSRange,CGRect等結構體

NSString 中的方法:

NSStringFromCGPoint  
NSStringFromCGSize  
NSStringFromCGRect  
NSStringFromCGAffineTransform  
NSStringFromUIEdgeInsets


如:NSLog(@"rect1: %@", NSStringFromCGRect(rect1));


2.如何在navigationviewcontroller中,pop到之前不同的viewcontroller(push過的viewcontroller)?

每當我們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之間進行傳值?

簡單點的來,兩個界面間傳值,直接上代碼了:

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);
}

這樣就實現了基本的使用,跟delegate類似,注意 addObserver時,需要寫目標viewcontroller的實例,而不是self。


5.通過系統自帶的NSPredicate使用正則表達式。(在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輸入長度(監聽textField文本變化的事件)

1、實現UITextFieldDelegate協議;
2、實現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;
    //輸入內容的長度 - textfield區域字符長度(一般=輸入字符長度)+替換的字符長度(一般為0)
 return (strLength <= kMaxLength);
}

如上代碼,如果我們簡單的這樣寫: if(range.location<=11) return  或是 if (textfield.text.length>=11) 這樣雖然也能限制位數為11位,但是如果通過放大鏡把光標切換到之前的位數后,你照樣可以輸入,并且還會導致輸入11位后,鍵盤上的退格(X鍵)無法使用,原因是:我們在location到達11位后,返回了NO,鍵盤無法相應:添加,修改,刪除。這是很嚴重的。所以照著我上面的。

方法解讀:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
功能:
  把textField中位置為range的字符串替換為string字符串;

     此函數在textField內容被修改時調用;
返回值:
    YES,表示修改生效;NO,表示不做修改,textField的內容不變。
參數說明:
  textField:響應UITextFieldDelegate協議的UITextField控件。
  range:    UITextField控件中光標選中的字符串,即被替換的字符串;
        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對象,這樣我們可以調用這個對象的方法和變量

[(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.貨幣格式轉

方法一:

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)

 把那些不能同時點下的按鈕或者視圖設置一下即可:

[view setExclusiveTouch:YES];


12.打亂數組元素的順序

-(void)Shuffle:(NSMutableArray*) arr
{
for (int i = 0; i < arr.count; ++i) {
int n = (arc4random() % arr.count - i) + i;
        [arr exchangeObjectAtIndex:i withObjectAtIndex:n];
    }
}

可以把它弄成數組的類目。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

肥西县| 鞍山市| 大关县| 沙田区| 珠海市| 喜德县| 怀化市| 云和县| 武隆县| 永靖县| 襄城县| 中西区| 镇江市| 彰化市| 海门市| 台东县| 滁州市| 石渠县| 通渭县| 东乌| 疏勒县| 文成县| 来安县| 绍兴县| 云霄县| 安福县| 云安县| 兴业县| 普宁市| 锡林郭勒盟| 黑河市| 斗六市| 苍梧县| 新兴县| 白山市| 林西县| 白水县| 五华县| 呼玛县| 贡嘎县| 石台县|