亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

IOS開發基礎知識--碎片27

2019-11-14 18:03:06
字體:
來源:轉載
供稿:網友

1:iOS中的round/ceil/floorf

extern float ceilf(float);extern double ceil(double);extern long double ceill(long double);extern float floorf(float);extern double floor(double);extern long double floorl(longdouble);extern float roundf(float);extern double round(double);extern long double roundl(longdouble);round:如果參數是小數,則求本身的四舍五入。ceil:如果參數是小數,則求最小的整數但不小于本身.floor:如果參數是小數,則求最大的整數但不大于本身. Example:如何值是3.4的話,則3.4 -- round 3.000000    -- ceil 4.000000    -- floor 3.00000

 

2:對數組進行轉換,把原來二個值轉化成一條的記錄(滿足左右排版布局)

NSMutableArray *mnewArray=[[NSMutableArray alloc]init];    NSArray *nameArray=@[@"1",@"2",@"3",@"4",@"5",@"6"];    int allCount=0;    if (nameArray.count%2==1) {        //說明是奇數        allCount=nameArray.count;    }    else    {        allCount=nameArray.count-1;    }    for (int i=0; i<allCount; i++) {        userModel *userM=[[userModel alloc]init];        userM.leftName=nameArray[i];        i++;        if (i!=nameArray.count) {            userM.rightName=nameArray[i];        }        [mnewArray addObject:userM];    }

 

3:APP撥打電話完又跳回到APP里,并監聽它的狀態

#import "ViewController.h"#import <CoreTelephony/CTCall.h>#import <CoreTelephony/CTCallCenter.h>@interface ViewController ()<UIAlertViewDelegate>@PRoperty(strong,nonatomic)UIWebView *phoneCallWebView;//電話監聽@property (nonatomic, strong) CTCallCenter * center;@end@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    }- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];}- (IBAction)sdfsdfsdfs:(id)sender {    [self directCall];        //監聽電話    __weak typeof(self) weakSelf = self;    self.center = [[CTCallCenter alloc] init];    self.center.callEventHandler = ^(CTCall* call) {        if ([call.callState isEqualToString:CTCallStateDisconnected])        {            NSLog(@"Call has been disconnected");        }        else if ([call.callState isEqualToString:CTCallStateConnected])        {            NSLog(@"Call has just been connected");        }        else if([call.callState isEqualToString:CTCallStateIncoming])        {            NSLog(@"Call is incoming");        }        else if ([call.callState isEqualToString:CTCallStateDialing])        {            //監聽再進入APP時彈出窗            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"AlertViewTest"                                                            message:@"message"                                                           delegate:weakSelf                                                  cancelButtonTitle:@"Cancel"                                                  otherButtonTitles:@"OtherBtn",nil];            [alert show];            NSLog(@"call is dialing");        }        else        {            NSLog(@"Nothing is done");        }    };}//打電話 結束完自動跳回APP-(void)directCall{    NSString *PhoneNum=@"10086";    NSURL *phoneURL=[NSURL URLWithString:[NSString stringWithFormat:@"tel:%@",PhoneNum]];    if (!self.phoneCallWebView) {        self.phoneCallWebView=[[UIWebView alloc]initWithFrame:CGRectZero];    }    [self.phoneCallWebView loadRequest:[NSURLRequest requestWithURL:phoneURL]];}@end

注意:監聽電話要引入CoreTelephony.framework,跳轉回APP則是通過一個UIWebView實現

 

4:UIView的layoutSubviews和drawRect方法何時調用

首先兩個方法都是異步執行。layoutSubviews方便數據計算,drawRect方便視圖重繪。

layoutSubviews在以下情況下會被調用:

1、init初始化不會觸發layoutSubviews。

2、addSubview會觸發layoutSubviews。
3、設置view的Frame會觸發layoutSubviews,當然前提是frame的值設置前后發生了變化。
4、滾動一個UIScrollView會觸發layoutSubviews。
5、旋轉Screen會觸發父UIView上的layoutSubviews事件。
6、改變一個UIView大小的時候也會觸發父UIView上的layoutSubviews事件。
7、直接調用setLayoutSubviews。
 
drawRect在以下情況下會被調用:

1、如果在UIView初始化時沒有設置rect大小,將直接導致drawRect不被自動調用。drawRect 掉用是在Controller->loadView, Controller->viewDidLoad 兩方法之后掉用的.所以不用擔心在 控制器中,這些View的drawRect就開始畫了.這樣可以在控制器中設置一些值給View(如果這些View draw的時候需要用到某些變量 值).

2、該方法在調用sizeToFit后被調用,所以可以先調用sizeToFit計算出size。然后系統自動調用drawRect:方法。
3、通過設置contentMode屬性值為UIViewContentModeRedraw。那么將在每次設置或更改frame的時候自動調用drawRect:。
4、直接調用setNeedsDisplay,或者setNeedsDisplayInRect:觸發drawRect:,但是有個前提條件是rect不能為0。
以上1,2推薦;而3,4不提倡
 
drawRect方法使用注意點:

 

1、 若使用UIView繪圖,只能在drawRect:方法中獲取相應的contextRef并繪圖。如果在其他方法中獲取將獲取到一個invalidate 的ref并且不能用于畫圖。drawRect:方法不能手動顯示調用,必須通過調用setNeedsDisplay 或 者 setNeedsDisplayInRect,讓系統自動調該方法。
2、若使用calayer繪圖,只能在drawInContext: 中(類似魚drawRect)繪制,或者在delegate中的相應方法繪制。同樣也是調用setNeedDisplay等間接調用以上方法
3、若要實時畫圖,不能使用gestureRecognizer,只能使用touchbegan等方法來掉用setNeedsDisplay實時刷新屏幕
 
5:UIView中的坐標轉換(convertPoint,convertRect)
// 將像素point由point所在視圖轉換到目標視圖view中,返回在目標視圖view中的像素值- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view;// 將像素point從view中轉換到當前視圖中,返回在當前視圖中的像素值- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view;// 將rect由rect所在視圖轉換到目標視圖view中,返回在目標視圖view中的rect- (CGRect)convertRect:(CGRect)rect toView:(UIView *)view;// 將rect從view中轉換到當前視圖中,返回在當前視圖中的rect- (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view;例把UITableViewCell中的subview(btn)的frame轉換到 controllerA中// controllerA 中有一個UITableView, UITableView里有多行UITableVieCell,cell上放有一個button// 在controllerA中實現:CGRect rc = [cell convertRect:cell.btn.frame toView:self.view];或CGRect rc = [self.view convertRect:cell.btn.frame fromView:cell];// 此rc為btn在controllerA中的rect或當已知btn時:CGRect rc = [btn.superview convertRect:btn.frame toView:self.view];或CGRect rc = [self.view convertRect:btn.frame fromView:btn.superview];

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美日韩中文在线制服| 久久久久国色av免费观看性色| 国产精品久久久久久久久久久久久| 精品国产福利视频| 国产精品欧美日韩一区二区| 日韩精品中文字幕在线观看| 国产精品jvid在线观看蜜臀| 国产精品激情av在线播放| 久久成人精品一区二区三区| 国产精品免费观看在线| 久久躁日日躁aaaaxxxx| 中文字幕欧美视频在线| 57pao精品| 成人两性免费视频| 欧美性黄网官网| 欧美日韩国产激情| 国产精品福利在线观看网址| 成人观看高清在线观看免费| 国产精品极品美女粉嫩高清在线| 911国产网站尤物在线观看| 欧美激情网友自拍| 欧美电影在线观看完整版| 精品国产户外野外| 国产精品黄色av| 91人人爽人人爽人人精88v| 51精品国产黑色丝袜高跟鞋| 精品调教chinesegay| 国产精品午夜一区二区欲梦| 久久国产精品久久久久久| 性欧美暴力猛交69hd| 欧美一区在线直播| 欧美午夜精品伦理| 北条麻妃一区二区在线观看| 亚洲人精选亚洲人成在线| 国产精品狼人色视频一区| 色综合视频网站| 国产精品免费网站| 国产精品高潮呻吟久久av无限| 国产精品视频区1| 亚洲精品久久久久久久久久久| 日韩不卡中文字幕| 色综合天天综合网国产成人网| 中文字幕日韩免费视频| 57pao国产精品一区| 国产成人精品免高潮在线观看| 欧美日韩在线视频一区| 久久影视电视剧免费网站| 欧美巨乳在线观看| 久久久久久国产精品久久| 97色在线观看免费视频| 欧美一乱一性一交一视频| 国产视频亚洲精品| 日韩精品极品在线观看播放免费视频| 国产欧美在线播放| 国产亚洲精品日韩| 亚洲人成亚洲人成在线观看| 亚洲天堂网在线观看| 亚洲国产婷婷香蕉久久久久久| 亚洲欧美一区二区三区情侣bbw| 欧美中文字幕视频| 亚洲天堂一区二区三区| 国产69精品99久久久久久宅男| 欧美精品中文字幕一区| 青青青国产精品一区二区| 一区二区成人精品| 亚洲欧美日韩久久久久久| 午夜精品久久久久久久99黑人| 精品亚洲国产视频| 91日本视频在线| 色伦专区97中文字幕| 北条麻妃在线一区二区| 国产精品毛片a∨一区二区三区|国| 91日本视频在线| 国产亚洲精品久久久久动| 欧美国产日韩在线| 欧美电影在线观看完整版| 亚洲国产婷婷香蕉久久久久久| 亚洲精品国产综合区久久久久久久| 韩剧1988在线观看免费完整版| 日韩美女视频中文字幕| 欧美性猛交xxxx乱大交极品| 国产亚洲欧美日韩精品| 国产精品直播网红| 亚洲精品国偷自产在线99热| 国产亚洲精品久久久久久| 国产成人涩涩涩视频在线观看| 精品日韩视频在线观看| 上原亚衣av一区二区三区| 亚洲欧美综合另类中字| 美日韩精品免费观看视频| 日韩电影大全免费观看2023年上| 国产在线观看91精品一区| 国产精品人成电影在线观看| 国产一区视频在线播放| 色综合久久天天综线观看| 亚洲成人激情在线观看| 91精品在线播放| 欧美精品在线网站| 91豆花精品一区| 久久亚洲精品国产亚洲老地址| 日韩中文字幕免费看| 欧美成人sm免费视频| 亚洲999一在线观看www| 亚洲精品一区二区久| 国产精品成人一区| 欧美午夜www高清视频| 在线日韩精品视频| 98精品国产高清在线xxxx天堂| 亚洲美女在线观看| 亚洲免费小视频| 尤物精品国产第一福利三区| 国产精品av电影| 欧美体内谢she精2性欧美| 久久精品男人天堂| 日韩大陆毛片av| 九九热视频这里只有精品| 性日韩欧美在线视频| 亚洲一区二区在线播放| 国产日韩在线看片| 亚洲精品美女视频| 久久躁狠狠躁夜夜爽| …久久精品99久久香蕉国产| 欧美大胆在线视频| 91久久久久久| 亚洲精品美女在线观看播放| 成人黄色免费网站在线观看| www.日韩视频| 欧亚精品中文字幕| 日韩视频欧美视频| 国产成人鲁鲁免费视频a| 国产精品久久久久久久久久ktv| 亚洲国产精品成人va在线观看| 成人免费观看49www在线观看| 日韩欧美999| 色www亚洲国产张柏芝| 欧美wwwwww| 日韩成人免费视频| 日韩一区二区三区国产| 成人午夜两性视频| 久久精品在线播放| 丰满岳妇乱一区二区三区| 欧美成人午夜影院| 亚洲欧美综合区自拍另类| 亚洲性生活视频在线观看| 91在线观看免费网站| 热久久免费国产视频| 欧美日韩国产页| 国产精品中文字幕在线观看| 欧美成人免费一级人片100| 亚洲欧美精品伊人久久| 国产一区二区香蕉| 亚洲精品视频网上网址在线观看| 亚洲欧美日韩精品久久奇米色影视| 亚洲人成电影网站| 日韩免费在线播放| 亚洲变态欧美另类捆绑| 夜色77av精品影院| 黄网站色欧美视频| 国产精品成人品| 国产精品99久久久久久人| 日本欧美黄网站| 欧美视频二区36p| 国产xxx69麻豆国语对白| 国产精品视频在线播放|