真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ios開發(fā)實(shí)例,ios類方法和實(shí)例方法

iOS開發(fā)中遇到的小問題-----總結(jié)

1、統(tǒng)一收鍵盤的方法

十載的梅江網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。網(wǎng)絡(luò)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整梅江建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)建站從事“梅江網(wǎng)站設(shè)計(jì)”,“梅江網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

[[[UIApplication sharedApplication] keyWindow] endEditing:YES];

2、提示框

BBAlertView *alert = [[BBAlertView alloc] initWithStyle:BBAlertViewStyleDefault

Title:@"刪除訂單"

message:@"是否刪除訂單,"

customView:nil

delegate:self

cancelButtonTitle:L(@"取消")

otherButtonTitles:L(@"確認(rèn)")];

[alert setCancelBlock:^{

}];

[alert setConfirmBlock:^{

[self orderDidRemovePressDown:tempDic Index:index.section];

}];

[alert show];

3、圖片的自適應(yīng)功能

self.brandImage.contentMode = UIViewContentModeScaleAspectFit;

4、cocoaPods清除緩存問題

$ sudo rm -fr ~/.cocoapods/repos/master

$ pod setup

5、設(shè)置顯示鍵盤的樣式

textView.keyboardType =UIKeyboardTypeDefault;

//設(shè)置鍵盤右下角為完成(中文輸入法下)

textView.returnKeyType=UIReturnKeyDone;

6、輸出當(dāng)前時(shí)間

NSDateFormatter * dateFormatter=[[NSDateFormatter alloc]init];

[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];

NSLog(@"當(dāng)前毫秒時(shí)間1==%@",[dateFormatter stringFromDate:[NSDate date]]);

7、顯示兩秒然后消失

UILabel * lab=[[UILabel alloc]initWithFrame:CGRectMake(60,Main_Screen_Height-64-49-60, Main_Screen_Width-120, 50)];

lab.backgroundColor=[UIColor grayColor];

ViewRadius(lab, 20);

lab.textAlignment=NSTextAlignmentCenter;

lab.text=@"請(qǐng)先進(jìn)行實(shí)名制驗(yàn)證";

[self.view addSubview:lab];

[UILabel animateWithDuration:2 animations:^{

lab.alpha=0;

}completion:^(BOOL finished) {

[lab removeFromSuperview];

}];

8、設(shè)置placeholder屬性的大小和顏色

[_phoneFie setValue:[UIColor grayColor] forKeyPath:@"_placeholderLabel.textColor"];

[_phoneFie setValue:[UIFont boldSystemFontOfSize:15] forKeyPath:@"_placeholderLabel.font"];

_phoneFie.returnKeyType=UIReturnKeyDone;

9、設(shè)置cell的交互完全不可以使用

//[cellTwo setUserInteractionEnabled:NO];

//設(shè)置cell不可以點(diǎn)擊,但是上面的子控件可以交互

cellTwo.selectionStyle=UITableViewCellSelectionStyleNone;

10、將textField的placeholder 屬性的字體向右邊移動(dòng)5

_field.leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10*Width_375, _field.frame.size.height)];

_field.leftViewMode = UITextFieldViewModeAlways;

11、開新線程使按鈕上的時(shí)間變化

-(void)startTime{

__block int timeout=60; //倒計(jì)時(shí)時(shí)間

UIButton * btn=(UIButton *)[self.view viewWithTag:1000];

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);

dispatch_source_set_timer(_timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒執(zhí)行

dispatch_source_set_event_handler(_timer, ^{

if(timeout=0){

dispatch_source_cancel(_timer);

dispatch_async(dispatch_get_main_queue(), ^{

[btn setTitle:@"發(fā)送驗(yàn)證碼" forState:UIControlStateNormal];

btn.enabled = YES;

});

}else{

//? int minutes = timeout / 60;

int miao = timeout % 60;

if (miao==0) {

miao = 60;

}

NSString *strTime = [NSString stringWithFormat:@"%.2d", miao];

dispatch_async(dispatch_get_main_queue(), ^{

[btn setTitle:[NSString stringWithFormat:@"剩余%@秒",strTime] forState:UIControlStateNormal];

btn.enabled = NO;

});

timeout--;

}

});

dispatch_resume(_timer);

}

12、隱藏TableView 中多余的行

UIView * view=[[UIView alloc]initWithFrame:CGRectZero];

[_tabelView setTableFooterView:view];

13、UIView添加背景圖片

UIImage * image=[UIImage imageNamed:@"friend750"];

headSeV.layer.contents=(id)image.CGImage;

14、UITableView取消選中狀態(tài)

[tableView deselectRowAtIndexPath:indexPath animated:YES];// 取消選中

15、帶屬性的字符串

NSFontAttributeName? 字體

NSParagraphStyleAttributeName? 段落格式

NSForegroundColorAttributeName? 字體顏色

NSBackgroundColorAttributeName? 背景顏色

NSStrikethroughStyleAttributeName 刪除線格式

NSUnderlineStyleAttributeName? ? ? 下劃線格式

NSStrokeColorAttributeName? ? ? ? 刪除線顏色

NSStrokeWidthAttributeName 刪除線寬度

NSShadowAttributeName? 陰影

1.? 使用實(shí)例

UILabel *testLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 100, 320, 30)];

testLabel.backgroundColor = [UIColor lightGrayColor];

testLabel.textAlignment = NSTextAlignmentCenter;

NSMutableAttributedString *AttributedStr = [[NSMutableAttributedString alloc]initWithString:@"今天天氣不錯(cuò)呀"];

[AttributedStr addAttribute:NSFontAttributeName

value:[UIFont systemFontOfSize:16.0]

range:NSMakeRange(2, 2)];

[AttributedStr addAttribute:NSForegroundColorAttributeName

value:[UIColor redColor]

range:NSMakeRange(2, 2)];

testLabel.attributedText = AttributedStr;

[self.view addSubview:testLabel];

16、加大按鈕的點(diǎn)擊范圍

把UIButton的frame 設(shè)置的大一些,然后給UIButton設(shè)置一個(gè)小些的圖片

[tmpBtn setImageEdgeInsets:UIEdgeInsetsMake(5, 5, 5, 5)];

// 注意這里不能用setBackgroundImage

[tmpBtn setImage:[UIImage imageNamed:@"testBtnImage"] forState:UIControlStateNormal];

17、//避免self的強(qiáng)引用

__weak ViewController *weakSelf = self;

18、//類別的創(chuàng)建

command +n ——Objective-C File———(File Type? 選擇是類別還是擴(kuò)展)———(Class? 選擇為哪個(gè)控件寫類別)

19、修改UITableview 滾動(dòng)條顏色的方法

self.tableView.indicatorStyle=UIScrollViewIndicatorStyleWhite;

20、利用UIWebView顯示pdf文件

webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)];

[webView setDelegate:self];

[webView setScalesPageToFit:YES];

[webViewsetAutoresizingMask:UIViewAutoresizingFlexibleWidth |UIViewAutoresizingFlexibleHeight];

[webView setAllowsInlineMediaPlayback:YES];

[self.view addSubview:webView];

NSString *pdfPath = [[NSBundle mainBundle]pathForResource:@"ojc" ofType:@"pdf"];

NSURL *url = [NSURLfileURLWithPath:pdfPath];

NSURLRequest *request = [NSURLRequestrequestWithURL:url

cachePolicy:NSURLRequestUseProtocolCachePolicy

timeoutInterval:5];

[webView loadRequest:request];

21、將plist文件中的數(shù)據(jù)賦給數(shù)組

NSString *thePath = [[NSBundle mainBundle]pathForResource:@"States" ofType:@"plist"];

NSArray *array = [NSArrayarrayWithContentsOfFile:thePath];

22、隱藏狀態(tài)欄

[[UIApplication shareApplication]setStatusBarHidden: YES animated:NO];

23、給navigation? Bar? 設(shè)置title顏色

UIColor *whiteColor = [UIColor whiteColor];

NSDictionary *dic = [NSDictionary dictionaryWithObject:whiteColor forKey:NSForegroundColorAttributeName];

[self.navigationController.navigationBar setTitleTextAttributes:dic];

24、使用AirDrop 進(jìn)行分享

NSArray *array = @[@"test1", @"test2"];

UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:array applicationActivities:nil];

[self presentViewController:activityVC animated:YES

completion:^{

NSLog(@"Air");

}];

25、把tableview里面Cell的小對(duì)勾的顏色改成別的顏色

_mTableView.tintColor = [UIColor redColor];

26、UITableView去掉分割線

_tableView.separatorStyle = NO;

27、正則判斷手機(jī)號(hào)碼地址格式

- (BOOL)isMobileNumber:(NSString *)mobileNum {

//? ? 電信號(hào)段:133/153/180/181/189/177

//? ? 聯(lián)通號(hào)段:130/131/132/155/156/185/186/145/176

//? ? 移動(dòng)號(hào)段:134/135/136/137/138/139/150/151/152/157/158/159/182/183/184/187/188/147/178

//? ? 虛擬運(yùn)營(yíng)商:170

NSString *MOBILE = @"^1(3[0-9]|4[57]|5[0-35-9]|8[0-9]|7[06-8])\\d{8}$";

NSPredicate *regextestmobile = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", MOBILE];

return [regextestmobile evaluateWithObject:mobileNum];

}

28、控制交易密碼位數(shù)

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{

if (textField.text.length =6){

[MBProgressHUD showMessage:@"密碼為6位" afterDelay:1.8];

return NO;

}

return YES;

}

29、判斷是不是空

if ([real_name isKindOfClass:[NSNull class]] ) {

return NO;}

30、點(diǎn)擊號(hào)碼撥打電話

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://400966220"]];

31、控制UITabbar的選擇哪一個(gè)

[self.tabBarController setSelectedIndex:1];

32、獲取當(dāng)前App的版本號(hào)

NSDictionary?*infoDictionary?=?[[NSBundle?mainBundle]?infoDictionary];

CFShow(infoDictionary);

//?app名稱

NSString?*app_Name?=?[infoDictionary?objectForKey:@"CFBundleDisplayName"];

//?app版本

NSString?*app_Version?=?[infoDictionary?objectForKey:@"CFBundleShortVersionString"];

//?app?build版本

NSString?*app_build?=?[infoDictionary?objectForKey:@"CFBundleVersion"];

33、蘋果app權(quán)限NSPhotoLibraryUsageDescriptionApp需要您的同意,才能訪問相冊(cè)NSCameraUsageDescriptionApp需要您的同意,才能訪問相機(jī)NSMicrophoneUsageDescriptionApp需要您的同意,才能訪問麥克風(fēng)NSLocationUsageDescriptionApp需要您的同意,才能訪問位置NSLocationWhenInUseUsageDescriptionApp需要您的同意,才能在使用期間訪問位置NSLocationAlwaysUsageDescriptionApp需要您的同意,才能始終訪問位置NSCalendarsUsageDescriptionApp需要您的同意,才能訪問日歷NSRemindersUsageDescriptionApp需要您的同意,才能訪問提醒事項(xiàng)NSMotionUsageDescriptionApp需要您的同意,才能訪問運(yùn)動(dòng)與健身NSHealthUpdateUsageDescriptionApp需要您的同意,才能訪問健康更新NSHealthShareUsageDescriptionApp需要您的同意,才能訪問健康分享NSBluetoothPeripheralUsageDescriptionApp需要您的同意,才能訪問藍(lán)牙NSAppleMusicUsageDescriptionApp需要您的同意,才能訪問媒體資料庫(kù)

34、控件設(shè)置邊框

_describText.layer.borderColor = [[UIColor colorWithRed:215.0 / 255.0 green:215.0 / 255.0 blue:215.0 / 255.0 alpha:1] CGColor];

_describText.layer.borderWidth = 1.0;

_describText.layer.cornerRadius = 4.0;

_describText.clipsToBounds = YES;

35、//隱藏電池條的方法

-(BOOL)prefersStatusBarHidden{

return YES;

}

36、延時(shí)操作

[NSThread sleepForTimeInterval:2];

方法二:

[self performSelector:@selector(delayMethod) withObject:nil afterDelay:1.5];

37、系統(tǒng)風(fēng)火輪:

[UIApplication sharedApplication].networkActivityIndicatorVisible = NO; //隱藏

38、//didSelectRowAtIndexPath:方法里面找到當(dāng)前的Cell

AssessMentCell * cell = [tableView cellForRowAtIndexPath:indexPath];

39、navigation上返回按鈕的顏色以及返回按鈕后面文字去掉

//返回按鈕后邊文字去掉

[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60)

forBarMetrics:UIBarMetricsDefault];

//設(shè)置左上角返回按鈕的顏色

self.navigationController.navigationBar.tintColor = UIColorFromRGB(0x666666);

40、lineBreakMode //設(shè)置文字過長(zhǎng)時(shí)的顯示格式

label.lineBreakMode = NSLineBreakByCharWrapping;以字符為顯示單位顯

示,后面部分省略不顯示。

label.lineBreakMode = NSLineBreakByClipping;剪切與文本寬度相同的內(nèi)

容長(zhǎng)度,后半部分被刪除。

label.lineBreakMode = NSLineBreakByTruncatingHead;前面部分文字

以……方式省略,顯示尾部文字內(nèi)容。

label.lineBreakMode = NSLineBreakByTruncatingMiddle;中間的內(nèi)容

以……方式省略,顯示頭尾的文字內(nèi)容。

label.lineBreakMode = NSLineBreakByTruncatingTail;結(jié)尾部分的內(nèi)容

以……方式省略,顯示頭的文字內(nèi)容。

label.lineBreakMode = NSLineBreakByWordWrapping;以單詞為顯示單位顯

示,后面部分省略不顯示。

ios開發(fā)cookie的使用

1.cookie的概念

Cookie是由服務(wù)器端生成,發(fā)送給User-Agent(一般是瀏覽器或者客戶端),瀏覽器會(huì)將Cookie的key/value保存到某個(gè)目錄下的文本文件內(nèi),下次請(qǐng)求同一網(wǎng)站地址時(shí)就發(fā)送該Cookie給服務(wù)器在使用UIWebView訪問網(wǎng)站時(shí),經(jīng)常遇到的一個(gè)問題是需要登錄。比如訪問新浪微博,或者訪問某個(gè)個(gè)人賬號(hào),但是需要直接訪問url,卻會(huì)被重定向到登錄頁(yè)進(jìn)行登錄。那么真正的瀏覽器是如何做到的直接登錄?一般來說,答案都是cookies。在你第一次登錄時(shí),網(wǎng)站設(shè)置了cookie,瀏覽器保存這些攜帶了登錄信息的cookies,以后就可以直接登錄。所以我們要做的就是在url request中帶上cookies。

2.蘋果系統(tǒng)中的cookie機(jī)制

因?yàn)镹SHTTPCookieStorage的默認(rèn)策略是:NSHTTPCookieAcceptPolicyAlways。當(dāng)你訪問一個(gè)網(wǎng)站時(shí),NSURLRequest都會(huì)幫你主動(dòng)記錄下來你訪問的站點(diǎn)設(shè)置的cookie,如果 Cookie 存在的話,會(huì)把這些信息放在 NSHTTPCookieStorage 容器中共享,

當(dāng)你下次再訪問這個(gè)站點(diǎn)時(shí),NSURLRequest會(huì)拿著上次保存下來了的cookie繼續(xù)去請(qǐng)求。

同樣適用于ASIHTTPRequest,AFNetworking, Webview等,cookie常用于一些基于認(rèn)證的網(wǎng)絡(luò)請(qǐng)求

NSHTTPCookieStorage 實(shí)現(xiàn)了一個(gè)管理cookie的單例對(duì)象(只有一個(gè)實(shí)例),每個(gè)cookie都是NSHTTPCookie類的實(shí)例,最為一個(gè)規(guī)則,cookie在所有應(yīng)用之間共享并在不同進(jìn)程之間保持同步。

Session cookie(一個(gè)isSessionOnly方法返回YES的cookie)只能在單一進(jìn)程中使用。

1.獲取cookie

2、如果當(dāng)前cookie為空,只要重新請(qǐng)求一個(gè)url

3、清空cookie

4、設(shè)置指定的cookie

6.UIWebView訪問網(wǎng)站時(shí),經(jīng)常遇到的一個(gè)問題是需要登錄。比如訪問新浪微博,或者訪問某個(gè)個(gè)人賬號(hào),但是需要直接訪問服務(wù)器返回的某個(gè)url,卻會(huì)被重定向到登錄頁(yè)進(jìn)行登錄。

補(bǔ)充

關(guān)于ios中cookie的使用案列: ios中Cookie的使用

iOS開發(fā)Flutter探索-State狀態(tài)保存(10)

有時(shí)候我們不希望某個(gè)頁(yè)面每次打開時(shí)都重新加載,比如就我們之前的Tabbar結(jié)構(gòu)的頁(yè)面,每當(dāng)我們?cè)谇袚QTab的時(shí)候都會(huì)執(zhí)行 void initState() ,這就意味著頁(yè)面每次都會(huì)重新渲染,之所以這樣就是因?yàn)槲覀兊?State 狀態(tài)沒有保存,如下圖所示:

[沒有狀態(tài)保存效果圖]

給當(dāng)前 State 類添加一個(gè)擴(kuò)展(這里就用擴(kuò)展這個(gè)詞吧,其實(shí)類似于iOS下的 Category ),一個(gè)系統(tǒng)的擴(kuò)展類 AutomaticKeepAliveClientMixin ,并重寫 wantKeepAlive 方法,讓一個(gè)普通的 State 類,具有保存狀態(tài)的能力。

在Dart語法中通過使用 with 關(guān)鍵字來添加擴(kuò)展:

bool get wantKeepAlive = true; 之后,當(dāng)前 State 就具備保存能力了,也就意味著重復(fù)切換Tab后, void initState() 就不會(huì)重復(fù)執(zhí)行了(由原來的 viewWillAppear() 變成了 viewDidLoad() )。

按照上面方式修改后,發(fā)現(xiàn)切換Tab后 void initState() 依然重復(fù)執(zhí)行了,這是為什么吶?這里我們看下我們之前 root_page.dart 里面是如何配置我們的tabbar結(jié)構(gòu)的:

這里我們是通過一個(gè) _viewControllers 的List,把4個(gè)子頁(yè)面放在了里面,全局有一個(gè) _currentIndex ,當(dāng) onTap 回調(diào)后后,更新 _currentIndex 的值,執(zhí)行 setState () 后, body 對(duì)應(yīng)的 widget 頁(yè)面發(fā)生改變。而問題也就出在這里,當(dāng) body 部分發(fā)生改變時(shí),根據(jù)Flutter的底層渲染邏輯,這里會(huì)移除掉之前的 Widget ,并重新創(chuàng)建新的 Widget ,我們之前在 _viewControllers 放的子頁(yè)面,并不像iOS下是一個(gè)實(shí)例對(duì)象,存在就直接拿來使用。在Flutter 中 setState () 后界面會(huì)被重新繪制,而 body 部分只知道我要渲染一個(gè)什么樣的 widget ,而該類型的 widget 每次都是會(huì)重新創(chuàng)建,這也就意味著我們?cè)赥ab切換時(shí),每次都是重新創(chuàng)建,所以每次都執(zhí)行了 initState() 。

顯然我們現(xiàn)在的方式是不合理的,那在Flutter中如何管理這樣的子頁(yè)面,而避免重復(fù)渲染吶?

這就要用到一個(gè)新的部件了: PageView() ,內(nèi)部的2個(gè)關(guān)鍵屬性:

子頁(yè)面切換通過 _controller.jumpToPage(index); 來實(shí)現(xiàn)。

這樣子頁(yè)面也就不會(huì)重新創(chuàng)建渲染了,我們的狀態(tài)保存也就能正常實(shí)現(xiàn)了。

學(xué)習(xí)是一個(gè)循序漸進(jìn)的過程,我們總是在踩坑中不斷的前行,把坑填平了也就意味著我們?cè)谶@個(gè)新的東西面前立了足,就可能進(jìn)行更多為什么的探索了。

iOS 開發(fā) delegate詳解

首先,讓我們看看為什么要使用delegate。

一個(gè)典型的ios應(yīng)用程序會(huì)有各種類型的對(duì)象:windows,tables,buttons,input boxes等等。在一個(gè)特定的應(yīng)用程序中,你會(huì)讓每個(gè)對(duì)象做特定的事情。比如說當(dāng)用戶點(diǎn)擊一個(gè)按鈕的時(shí)候,會(huì)執(zhí)行一個(gè)特定的操作或者使用一個(gè)table顯示特定的數(shù)據(jù)。

每個(gè)對(duì)象實(shí)例會(huì)有處理 特定 的事情。比如說我們有一個(gè)UITableView的實(shí)例,我們可能會(huì)讓它以特定的方式來顯示特定的 數(shù)據(jù),同樣的,我們對(duì)table的每一行進(jìn)行tapping或者swiping操作的時(shí)候,它們也會(huì)做出自己特有的事件處理方式。為了避免為達(dá)到某一個(gè)特定的目的(actions or events)而創(chuàng)建一個(gè)子類(如果有多種不同的特定目的就會(huì)創(chuàng)建多個(gè)子類),你可以寫出響應(yīng)這些操作或者事件的方法,它們會(huì)在這些操作或者事件發(fā)生的時(shí)候被調(diào)用,為了達(dá)到此目的,你只需要給這個(gè)對(duì)象一個(gè)delegate(一個(gè)對(duì)象)。你可以使一個(gè)類作為其他一個(gè)對(duì)象或者多個(gè)對(duì)象的delegate。

簡(jiǎn)單的說代理就是在類外,讓特定的人對(duì)該類做特定的操作的一種實(shí)現(xiàn)方法。


當(dāng)前名稱:ios開發(fā)實(shí)例,ios類方法和實(shí)例方法
文章URL:http://weahome.cn/article/dsgccgd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部