IOS开发基础知识--碎片32
1:動(dòng)畫(huà)屬性UIViewAnimationOptions說(shuō)明
a:常規(guī)動(dòng)畫(huà)屬性設(shè)置(可以同時(shí)選擇多個(gè)進(jìn)行設(shè)置)
UIViewAnimationOptionLayoutSubviews:動(dòng)畫(huà)過(guò)程中保證子視圖跟隨運(yùn)動(dòng)。
UIViewAnimationOptionAllowUserInteraction:動(dòng)畫(huà)過(guò)程中允許用戶(hù)交互。
UIViewAnimationOptionBeginFromCurrentState:所有視圖從當(dāng)前狀態(tài)開(kāi)始運(yùn)行。
UIViewAnimationOptionRepeat:重復(fù)運(yùn)行動(dòng)畫(huà)。
UIViewAnimationOptionAutoreverse?:動(dòng)畫(huà)運(yùn)行到結(jié)束點(diǎn)后仍然以動(dòng)畫(huà)方式回到初始點(diǎn)。
UIViewAnimationOptionOverrideInheritedDuration:忽略嵌套動(dòng)畫(huà)時(shí)間設(shè)置。
UIViewAnimationOptionOverrideInheritedCurve:忽略嵌套動(dòng)畫(huà)速度設(shè)置。
UIViewAnimationOptionAllowAnimatedContent:動(dòng)畫(huà)過(guò)程中重繪視圖(注意僅僅適用于轉(zhuǎn)場(chǎng)動(dòng)畫(huà))。??
UIViewAnimationOptionShowHideTransitionViews:視圖切換時(shí)直接隱藏舊視圖、顯示新視圖,而不是將舊視圖從父視圖移除(僅僅適用于轉(zhuǎn)場(chǎng)動(dòng)畫(huà))
UIViewAnimationOptionOverrideInheritedOptions :不繼承父動(dòng)畫(huà)設(shè)置或動(dòng)畫(huà)類(lèi)型。
b.動(dòng)畫(huà)速度控制(可從其中選擇一個(gè)設(shè)置)
UIViewAnimationOptionCurveEaseInOut:動(dòng)畫(huà)先緩慢,然后逐漸加速。
UIViewAnimationOptionCurveEaseIn :動(dòng)畫(huà)逐漸變慢。
UIViewAnimationOptionCurveEaseOut:動(dòng)畫(huà)逐漸加速。
UIViewAnimationOptionCurveLinear :動(dòng)畫(huà)勻速執(zhí)行,默認(rèn)值。
c.轉(zhuǎn)場(chǎng)類(lèi)型(僅適用于轉(zhuǎn)場(chǎng)動(dòng)畫(huà)設(shè)置,可以從中選擇一個(gè)進(jìn)行設(shè)置,基本動(dòng)畫(huà)、關(guān)鍵幀動(dòng)畫(huà)不需要設(shè)置)
UIViewAnimationOptionTransitionNone:沒(méi)有轉(zhuǎn)場(chǎng)動(dòng)畫(huà)效果。
UIViewAnimationOptionTransitionFlipFromLeft?:從左側(cè)翻轉(zhuǎn)效果。
UIViewAnimationOptionTransitionFlipFromRight:從右側(cè)翻轉(zhuǎn)效果。
UIViewAnimationOptionTransitionCurlUp:向后翻頁(yè)的動(dòng)畫(huà)過(guò)渡效果。????
UIViewAnimationOptionTransitionCurlDown :向前翻頁(yè)的動(dòng)畫(huà)過(guò)渡效果。????
UIViewAnimationOptionTransitionCrossDissolve:舊視圖溶解消失顯示下一個(gè)新視圖的效果。????
UIViewAnimationOptionTransitionFlipFromTop :從上方翻轉(zhuǎn)效果。????
UIViewAnimationOptionTransitionFlipFromBottom:從底部翻轉(zhuǎn)效果。
?
2:復(fù)雜UITableCellView,移除重用
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{__weak typeof(self) weakSelf = self;BLSPayOrderModel *model=self.dataList[indexPath.section];BLSProjectMoneyCompleteCell *cell = [tableView dequeueReusableCellWithIdentifier:NSStringFromClass([BLSProjectMoneyCompleteCell class])];if (cell) {cell=[[BLSProjectMoneyCompleteCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:NSStringFromClass([BLSProjectMoneyCompleteCell class])];}else{//刪除cell的所有子視圖while ([cell.contentView.subviews lastObject] != nil){[(UIView*)[cell.contentView.subviews lastObject] removeFromSuperview];}}cell.myPayOrderModel=model;return cell; }?
3:本地通知運(yùn)用
輸入所要發(fā)送的信息 ,同時(shí)將label的值通過(guò)button方法調(diào)用傳遞, - (IBAction)buttonClick:(id)sender {//添加 字典,將label的值通過(guò)key值設(shè)置傳遞NSDictionary *dict =[[NSDictionary alloc] initWithObjectsAndKeys:self.textFieldOne.text,@"textOne",self.textFieldTwo.text,@"textTwo", nil];//創(chuàng)建通知NSNotification *notification =[NSNotification notificationWithName:@"tongzhi" object:nil userInfo:dict];//通過(guò)通知中心發(fā)送通知 [[NSNotificationCenter defaultCenter] postNotification:notification];[self.navigationController popViewControllerAnimated:YES];} 在發(fā)送通知后,在所要接收的控制器中注冊(cè)通知監(jiān)聽(tīng)者,將通知發(fā)送的信息接收 - (void)viewDidLoad {[super viewDidLoad];//注冊(cè)通知[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(tongzhi:) name:@"tongzhi" object:nil];} - (void)tongzhi:(NSNotification *)text{NSLog(@"%@",text.userInfo[@"textOne"]);NSLog(@"-----接收到通知------");} 移除通知:removeObserver:和removeObserver:name:object: 其中,removeObserver:是刪除通知中心保存的調(diào)度表一個(gè)觀察者的所有入口,而removeObserver:name:object:是刪除匹配了通知中心保存的調(diào)度表中觀察者的一個(gè)入口。 這個(gè)比較簡(jiǎn)單,直接調(diào)用該方法就行。例如: [[NSNotificationCenter defaultCenter] removeObserver:observer name:nil object:self]; 注意參數(shù)notificationObserver為要?jiǎng)h除的觀察者,一定不能置為nil。?
4:iOS中的URL Scheme知識(shí)點(diǎn)
在iOS的SDK中提供了一個(gè)非常有意思的功能,它能將iOS的Application同自定義的URL Schema綁定,同時(shí)可以通過(guò)URL Scheme在瀏覽器或者是其他應(yīng)用中啟動(dòng)這個(gè)Application。本文主要介紹如何通過(guò)URL Scheme的方式啟動(dòng)應(yīng)用和參數(shù)的傳遞。
1、首先在*-Info.plist中添加一行,選擇URL types,效果如下圖所示:
2、在展開(kāi)的Item 0中填寫(xiě)URL identifier,這個(gè)用來(lái)唯一標(biāo)識(shí)用戶(hù)自定義的URL Scheme,推薦使用域名的反轉(zhuǎn)形式,如:com.devzeng.demo
3:在Item 0中添加新的一行,選擇URL Schemes
4、展開(kāi)URL Schemes,在Item 0中輸入自定義的Scheme的名稱(chēng)。在這里只需要輸入自定義的Scheme的名稱(chēng)即可,不需要加上://,例如這里輸入的是devzeng,那么對(duì)應(yīng)的自定義的URL就是devzeng://,這里可以輸入多個(gè)。
5、最后一個(gè)完整的示例效果圖:
使用URL Scheme?
?1、在Safari中使用??在Safari中直接在瀏覽器的地址欄中輸入devzeng://,即可啟動(dòng)剛才的應(yīng)用??
2、在其他的應(yīng)用程序中使用??在需要調(diào)用的地方使用下面的代碼即可實(shí)現(xiàn)調(diào)用
NSString *customURL = @"devzeng://"; [[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]];3、參數(shù)的傳遞
- (void)openOtherApp {NSString *customURL = @"devzeng://?token=123abct?istered=1";[[UIApplication sharedApplication] openURL:[NSURL URLWithString:customURL]]; }在AppDelegate中可以實(shí)現(xiàn)下面的兩個(gè)方法??
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url??
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation??
說(shuō)明:?
?(1)上面的兩個(gè)函數(shù)作用是一致的只是參數(shù)不同而已,函數(shù)的返回值是BOOL,如果為YES表示可以打開(kāi),NO表示不可以打開(kāi)應(yīng)用程序
?(2)參數(shù)可以通過(guò)[url query]來(lái)獲取,比如使用的是devzeng://?token=123abct®istered=1那么通過(guò)[url query]獲取到的值是token=123abct®istered=1,然后可以通過(guò)這些數(shù)據(jù)再作相應(yīng)的處理.?
?(3)調(diào)用的應(yīng)用程序的Bundle ID可以通過(guò)sourceApplication參數(shù)獲取
?(4)通過(guò)[url scheme]可以獲取到請(qǐng)求的URL Scheme,比如是通過(guò)devzeng://打開(kāi)的那么[url scheme]的值就是devzeng。可以通過(guò)不同的參數(shù)來(lái)判斷來(lái)源的合法性?
?(5)示例
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {if ([sourceApplication isEqualToString:@"com.devzeng.demo.urlscheme"]){NSLog(@"調(diào)用的應(yīng)用程序的Bundle ID是: %@", sourceApplication);NSLog(@"URL scheme:%@", [url scheme]);NSLog(@"URL query: %@", [url query]);return YES;}else{return NO;} }*注意 可以創(chuàng)建多個(gè)的scheme,除了在plist文件里面創(chuàng)建還可以在Targets里面的Info--URL Types創(chuàng)建
總結(jié)
以上是生活随笔為你收集整理的IOS开发基础知识--碎片32的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [转载]根据两点的经纬度求方位角和距离,
- 下一篇: map.js的编写(js编写一个对象的方