iOS开发基础-九宫格坐标(4)

  对iOS开发基础-九宫格坐标(3)的代码进行进一步优化。

  新建一个 UIView 的子类,并命名为 WJQAppView ,将 appxib.xib 中的 UIView 对象与新建的视图类进行关联。

   WJQAppView 类中声明3个 IBOutlet 属性,与 appxib.xib 中的视图对象包含的 UIImageView 、 UILabel 和 UIButton 建立连接。 WJQAppView 头文件代码如下所示:

1 //WJQAppView.h
2 @interface WJQAppView : UIView
3 @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

时间: 2024-10-10 04:54:28

iOS开发基础-九宫格坐标(4)的相关文章

iOS开发基础-九宫格坐标(6)

继续对iOS开发基础-九宫格坐标(5)中的代码进行优化. 优化思路:把字典转模型部分的数据处理操作也拿到模型类中去实现,即将 ViewController 类实现中 apps 方法搬到 WJQAppInfo 类实现. 实例代码 在 WJQAppInfo.h 中添加一个向外公开的接口,其返回处理好的模型数组,方法定义如下: + (NSArray *)appInfoArray; 实现代码如下: 1 //WJQAppInfo.m.将数据处理部分搬到模型类中进行处理 2 + (NSArray *)app

iOS开发UI基础—九宫格坐标计算

iOS开发UI基础-九宫格坐标计算 一.要求 完成下面的布局 二.分析 寻找左边的规律,每一个uiview的x坐标和y坐标. 三.实现思路 (1)明确每一块用得是什么view (2)明确每个view之间的父子关系,每个视图都只有一个父视图,拥有很多的子视图. (3)可以先尝试逐个的添加格子,最后考虑使用for循环,完成所有uiview的创建 (4)加载app数据,根据数据长度创建对应个数的格子 (5)添加格子内部的子控件 (6)给内部的子控件装配数据 四.代码示例 1 // 2 // YYVie

iOS开发基础知识--碎片13

 iOS开发基础知识--碎片13 1:运行程序报the file couldn't be opened because you don't have permission to view it 解决办法:项目—>targets->build settings->build options->changed the value of the "Compiler for C/C++/Objective-C" to Default Compiler. 2:百度地图引用

iOS开发基础知识--碎片7

iOS开发基础知识--碎片7  三十八:各个版本IPHONE分辨率及图片的实现原理 [email protected] : iPhone 4s (320 x 420) [email protected] : iPhones 5, 5C and 5S (320 x 568) [email protected] : iPhone 6 (375 x 667) [email protected] : iPhone 6+ (414 x 736) [email protected]~ipad : iPad

iOS开发基础知识--碎片43

iOS开发基础知识--碎片43  iOS开发基础知识--碎片43 1:增加手势进行左划效果,针对视图并修改其中一个的坐标,菜单用隐藏跟显示 @property(strong,nonatomic)UISwipeGestureRecognizer *recognizer; self.recognizer = [[ UISwipeGestureRecognizer alloc ] initWithTarget:self action:@selector (handleSwipeFrom:)]; [se

iOS开发基础知识--碎片46

iOS开发基础知识--碎片46  iOS开发基础知识--碎片46 1:带中文的URL处理 // http://static.tripbe.com/videofiles/视频/我的自拍视频.mp4 NSString *path = (__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL,(__bridge CFStringRef)model.mp4_url, CFSTR("

iOS开发基础知识--碎片32

 iOS开发基础知识--碎片32 1:动画属性UIViewAnimationOptions说明 a:常规动画属性设置(可以同时选择多个进行设置) UIViewAnimationOptionLayoutSubviews:动画过程中保证子视图跟随运动. UIViewAnimationOptionAllowUserInteraction:动画过程中允许用户交互. UIViewAnimationOptionBeginFromCurrentState:所有视图从当前状态开始运行. UIViewAnimat

iOS开发基础知识--碎片1

iOS开发基础知识--碎片1  一:NSString与NSInteger的互换 NSInteger转化NSString类型:[NSString stringWithFormat: @"%d", NSInteger]; NSString转化 NSInteger类型:NSInteger = [NSString intValue]; *其它几个同理 [NSString boolValue].[NSString floatValue].[NSString doubleValue] 二:Obje

iOS开发基础知识--碎片3

iOS开发基础知识--碎片3  iOS开发基础知识--碎片3 十二:判断设备 //设备名称 return [UIDevice currentDevice].name; //设备型号,只可得到是何设备,无法得到是第几代设备 return [UIDevice currentDevice].model; //系统版本型号,如iPhone OS return [UIDevice currentDevice].systemVersion; //系统版本名称,如6.1.3 return [UIDevice