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

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

[iOS基礎控件-4.3]APP列表xib的使用

2019-11-14 19:50:03
字體:
來源:轉載
供稿:網友
A.storyboard和xib
1.storyboard: 相對xib較重量級,控制整個應用的所有界面
2.xib: 輕量級,一般用來描述局部界面
 
B.使用
1.新建xib文件
New File ==> User Interface ==> Empty
Image
 
2.打開新建的xib文件,出現可視化窗口
(1)拖入一個UIView (不是UIViewController)
(2)設置大?。洪_啟可自定義尺寸 ==> 定義尺寸
Image
(3)拖入圖標圖片、名字、下載按鈕,調整設置
Image
 
3.在代碼中獲取xib中的view,并設置數據
(1)從xib獲取view
a.方法1:
1         // 1.獲取xib中的view, xib中可以同時定義多個view,注意名字不帶擴展名2         NSArray *viewArray = [[NSBundle mainBundle] loadNibNamed:@"app" owner:nil options:nil];3         UIView *appView = [viewArray lastObject];
 
b.方法2:
1         UINib *nib = [UINib nibWithNibName:@"app" bundle:[NSBundle mainBundle]];2         NSArray *viewArray = [nib instantiateWithOwner:nil options:nil];3         UIView *appView = [viewArray lastObject];
 
(2)取出View中的元素,設置圖片
a.方法1,使用SubView數組:
1         // 3.設置圖片2         UIImageView *iconView = appView.subviews[2];3         iconView.image = [UIImage imageNamed:appData.icon];
 
注意:按照教程是按照下圖的順序排列數組元素(imageView應該是subviews[0],但是實際編程發現卻不是,所以此方法并不穩定)
Image
 
b.方法2,使用tag:
1         // 3.設置圖片2         UIImageView *iconView = [appView viewWithTag:1];3         iconView.image = [UIImage imageNamed:appData.icon];
 
(3)設置名字
1         // 4.設置名字2         UILabel *nameLabel = [appView viewWithTag:2];3         nameLabel.text = appData.name;
 
(4)下載按鈕已經在xib中定義好,不必使用代碼
 
 
C.實現代碼
  1 #import "ViewController.h"  2 #import "App.h"  3   4 #define ICON_KEY @"icon"  5 #define NAME_KEY @"name"  6 #define APP_WIDTH 85  7 #define APP_HEIGHT 90  8 #define MARGIN_HEAD 20  9 #define ICON_WIDTH 50 10 #define ICON_HEIGHT 50 11 #define NAME_WIDTH APP_WIDTH 12 #define NAME_HEIGHT 20 13 #define DOWNLOAD_WIDTH (APP_WIDTH - 20) 14 #define DOWNLOAD_HEIGHT 20 15  16 @interface ViewController () 17  18 /** 存放應用信息 */ 19 @PRoperty(nonatomic, strong) NSArray *apps; // 應用列表 20  21 @end 22  23 @implementation ViewController 24  25 - (void)viewDidLoad { 26     [super viewDidLoad]; 27     // Do any additional setup after loading the view, typically from a nib. 28      29     [self loadApps]; 30 } 31  32 - (void)didReceiveMemoryWarning { 33     [super didReceiveMemoryWarning]; 34     // Dispose of any resources that can be recreated. 35 } 36  37 #pragma mark 取得應用列表 38 - (NSArray *) apps { 39     if (nil == _apps) { 40         // 1.獲得plist的全路徑 41         NSString *path = [[NSBundle mainBundle] pathForResource:@"app.plist" ofType:nil]; 42          43         // 2.加載數據 44         NSArray *dictArray  = [NSArray arrayWithContentsOfFile:path]; 45          46         // 3.將dictArray里面的所有字典轉成模型,放到新數組中 47         NSMutableArray *appArray = [NSMutableArray array]; 48         for (NSDictionary *dict in dictArray) { 49             // 3.1創建模型對象 50             App *app = [App appWithDictionary:dict]; 51              52             // 3.2 添加到app數組中 53             [appArray addObject:app]; 54         } 55          56         _apps = appArray; 57     } 58  59     return _apps; 60 } 61  62 #pragma mark 加載全部應用列表 63 - (void) loadApps { 64     int appColumnCount = [self appColumnCount]; 65     int appRowCount = [self appRowCount]; 66      67     CGFloat marginX = (self.view.frame.size.width - APP_WIDTH * appColumnCount) / (appColumnCount + 1); 68     CGFloat marginY = (self.view.frame.size.height - APP_HEIGHT * appRowCount) / (appRowCount + 1) + MARGIN_HEAD; 69      70     int column = 0; 71     int row = 0; 72     for (int index=0; index<self.apps.count; index++) { 73         App *appData = self.apps[index]; 74  75         // 1.獲取xib中的view, xib中可以同時定義多個view,注意名字不帶擴展名 76 //        NSArray *viewArray = [[NSBundle mainBundle] loadNibNamed:@"app" owner:nil options:nil]; 77 //        UIView *appView = [viewArray lastObject]; 78          79         UINib *nib = [UINib nibWithNibName:@"app" bundle:[NSBundle mainBundle]]; 80         NSArray *viewArray = [nib instantiateWithOwner:nil options:nil]; 81         UIView *appView = [viewArray lastObject]; 82          83         // 2.定義每個app的位置、尺寸 84         CGFloat appX = marginX + column * (marginX + APP_WIDTH); 85         CGFloat appY = marginY + row * (marginY + APP_HEIGHT); 86         appView.frame = CGRectMake(appX, appY, APP_WIDTH, APP_HEIGHT); 87          88         // 3.設置圖片 89         UIImageView *iconView = [appView viewWithTag:1]; 90         iconView.image = [UIImage imageNamed:appData.icon]; 91          92         // 4.設置名字 93         UILabel *nameLabel = [appView viewWithTag:2]; 94         nameLabel.text = appData.name; 95          96         // 5.加入此app信息到總view 97         [self.view addSubview:appView]; 98          99         column++;100         if (column == appColumnCount) {101             column = 0;102             row++;103         }104     }105 }106 107 108 #pragma mark 計算列數109 - (int) appColumnCount {110     int count = 0;111     count = self.view.frame.size.width / APP_WIDTH;112     113     if ((int)self.view.frame.size.width % (int)APP_WIDTH == 0) {114         count--;115     }116     117     return count;118 }119 120 #pragma mark 計算行數121 - (int) appRowCount {122     int count = 0;123     count = (self.view.frame.size.height - MARGIN_HEAD) / APP_HEIGHT;124     125     if ((int)(self.view.frame.size.height - MARGIN_HEAD) % (int)APP_HEIGHT == 0) {126         count--;127     }128     129     return count;130 }131 132 @end

 

 
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品视频在线播放色网色视频| 97久久精品国产| 国模吧一区二区三区| 久久九九精品99国产精品| 精品偷拍一区二区三区在线看| 亚洲国产精品福利| 欧美日韩精品二区| 欧美色视频日本高清在线观看| 日韩美女视频在线观看| 成人国产精品一区| 亚洲欧美中文另类| 国产视频综合在线| 国产精品视频自在线| 精品成人国产在线观看男人呻吟| 欧美精品在线免费| 欧美性理论片在线观看片免费| 欧美在线视频免费观看| 久久久久久久亚洲精品| 亚洲乱码国产乱码精品精天堂| 精品亚洲aⅴ在线观看| 日韩欧美一区二区在线| 成人美女av在线直播| 蜜臀久久99精品久久久无需会员| 亚洲国产精品va在线看黑人动漫| 国产成人精品综合| 国产成人精品电影| 亚洲自拍偷拍第一页| 国产午夜精品全部视频播放| 在线亚洲午夜片av大片| 亚洲午夜小视频| 亚洲嫩模很污视频| 狠狠色噜噜狠狠狠狠97| 亚洲精品久久久一区二区三区| 性色av香蕉一区二区| 亚洲有声小说3d| 一本一道久久a久久精品逆3p| 色综合伊人色综合网站| 欧美专区在线观看| 久久久视频精品| 国产主播喷水一区二区| 久久精品91久久久久久再现| 亚洲变态欧美另类捆绑| 国产精品美女主播| 国产成人一区二| 北条麻妃久久精品| 色综合亚洲精品激情狠狠| 日韩精品日韩在线观看| 精品二区三区线观看| 91精品国产91久久久久| 欧美激情va永久在线播放| 国产亚洲欧美aaaa| 国产婷婷97碰碰久久人人蜜臀| 97成人精品区在线播放| 中文字幕亚洲欧美日韩在线不卡| 国自产精品手机在线观看视频| 亚洲欧美另类在线观看| 久久av.com| 成人精品久久一区二区三区| 亚洲天堂av在线免费观看| 亚洲第一免费网站| www.xxxx欧美| 欧美日本国产在线| 久久国内精品一国内精品| 国产美女久久精品香蕉69| 国产精品久久久久av免费| 国模精品视频一区二区三区| 亚洲区在线播放| 亚洲bt欧美bt日本bt| 欧美成人一区在线| 久久777国产线看观看精品| 欧美高清视频免费观看| 中文字幕国内精品| 久久久久久久久亚洲| 国产精品视频yy9099| 亚洲网站视频福利| 亚洲综合社区网| 亚洲成人av在线播放| 最近日韩中文字幕中文| 国产精品99久久久久久久久| 国产精品久久久久久久久久三级| 亚洲最新av网址| 国产欧亚日韩视频| 国产69精品久久久久久| 成人午夜在线影院| 日韩av电影手机在线观看| 国产精品最新在线观看| 久久99久久99精品中文字幕| 亚洲香蕉伊综合在人在线视看| 国自产精品手机在线观看视频| 国产在线拍偷自揄拍精品| 亚洲免费视频网站| 欧美一级免费视频| 亚洲欧美视频在线| 色偷偷噜噜噜亚洲男人的天堂| 成人在线国产精品| 亚洲女性裸体视频| 日韩精品视频在线播放| 亚洲自拍av在线| 国产网站欧美日韩免费精品在线观看| 456国产精品| 日韩av免费看| 黄色一区二区在线观看| 中文字幕日韩av综合精品| 亚洲最大福利视频| 精品中文字幕在线观看| 亚洲成人网av| 亚洲视频欧美视频| 国产精品伦子伦免费视频| 亚洲一区二区三区在线视频| 亚洲第一偷拍网| 久久国内精品一国内精品| 久久影视电视剧免费网站| 欧美日韩国产综合新一区| 成人黄色影片在线| 国产经典一区二区| 日韩精品在线影院| 中文字幕日韩视频| 欧美尺度大的性做爰视频| 色偷偷av一区二区三区| 97香蕉超级碰碰久久免费的优势| 久久久久国产一区二区三区| 热99精品只有里视频精品| 欧美成人精品xxx| 精品色蜜蜜精品视频在线观看| 亚洲第一精品自拍| 精品亚洲永久免费精品| 久久九九精品99国产精品| 91精品国产综合久久香蕉| 久久精品久久久久久国产 免费| 精品亚洲一区二区三区在线播放| 第一福利永久视频精品| 韩国三级电影久久久久久| 亚洲精品电影在线| 成人黄色大片在线免费观看| 精品久久久av| 欧美色播在线播放| 欧美国产日韩视频| 国产精品女人网站| 亚洲欧洲午夜一线一品| 欧美激情一二区| 亚洲网址你懂得| 久久精品欧美视频| 91chinesevideo永久地址| 黄色精品一区二区| 国产91成人在在线播放| 伊人亚洲福利一区二区三区| 国产精品老女人精品视频| 亚洲电影成人av99爱色| 51精品国产黑色丝袜高跟鞋| 欧美猛男性生活免费| 国产亚洲一区二区精品| 亚洲精品国产拍免费91在线| 国产视频999| 色综合久久中文字幕综合网小说| 在线视频日本亚洲性| 96sao精品视频在线观看| 亚洲丝袜av一区| 国产在线久久久| 性欧美长视频免费观看不卡| 亚洲人成电影在线观看天堂色| 久久久91精品| 日韩激情av在线免费观看| 欧美成人合集magnet| 亚洲欧美国产一本综合首页|