標籤:
對iOS開發基礎-九宮格座標(3)的代碼進行進一步最佳化。
建立一個 UIView 的子類,並命名為 WJQAppView ,將 appxib.xib 中的 UIView 對象與建立的視圖類進行關聯。
WJQAppView 類中聲明3個 IBOutlet 屬性,與 appxib.xib 中的視圖對象包含的 UIImageView 、 UILabel 和 UIButton 建立串連。 WJQAppView 標頭檔代碼如下所示:
1 //WJQAppView.h2 @interface WJQAppView : UIView3 @property (weak, nonatomic) IBOutlet UIImageView *appImage;4 @property (weak, nonatomic) IBOutlet UILabel *appLabel;5 @property (weak, nonatomic) IBOutlet UIButton *appButton;6 @end
最後,修改 ViewController.m 中的 viewDidLoad 方法:
1 //ViewController.m 2 - (void)viewDidLoad { 3 [super viewDidLoad]; 4 5 int totalColumn = 3; //3列 6 CGFloat margin = (self.view.frame.size.width - totalColumn*appViewWidth) / (totalColumn + 1); 7 int count = self.apps.count; 8 NSLog(@"%d", count); 9 10 for (int i = 0; i < count; i++) {11 int row = i/totalColumn; //行號,從0開始12 int column = i%totalColumn; //列號,從0開始13 CGFloat appViewX = margin + (margin + appViewWidth) * column; //子視圖的X座標14 CGFloat appViewY = margin + (margin + appViewHeight) * row; //子視圖的Y座標15 WJQAppInfo *appInfo = self.apps[i];16 17 //建立UIView控制項18 NSArray *appArray = [[NSBundle mainBundle] loadNibNamed:@"appxib" owner:nil options:nil];19 WJQAppView *appView = [appArray firstObject];20 appView.frame = CGRectMake(appViewX, appViewY, appViewWidth, appViewHeight);21 appView.appImage.image = appInfo.image; //設定圖片22 appView.appLabel.text = appInfo.desc; //設定名稱23 appView.appButton.tag = i; //設定按鈕的序號24 [appView.appButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];25 26 [self.view addSubview:appView];27 }28 }
參考部落格:iOS開發UI篇—xib的簡單使用
執行個體代碼:http://pan.baidu.com/s/1o7l6IXc
iOS開發基礎-九宮格座標(4)