iOS开发——完整项目实战OC篇&项目总结之九宫格布局双语实现

项目总结之九宫格布局双语实现

九宫格布局创建子控件

  • Objective-C版的实现
 1
 2  // 按钮
 3     // 数据
 4     NSArray *images = @[@"publish-video", @"publish-picture", @"publish-text", @"publish-audio", @"publish-review", @"publish-offline"];
 5     NSArray *titles = @[@"发视频", @"发图片", @"发段子", @"发声音", @"审帖", @"离线下载"];
 6
 7     // 一些参数
 8     NSUInteger count = images.count;
 9     int maxColsCount = 3; // 一行的列数
10     NSUInteger rowsCount = (count + maxColsCount - 1) / maxColsCount;
11
12     // 按钮尺寸
13     CGFloat buttonW = [UIScreen mainScreen].bounds.size.width / maxColsCount;
14     CGFloat buttonH = buttonW * 0.85;
15     CGFloat buttonStartY = ([UIScreen mainScreen].bounds.size.height - rowsCount * buttonH) * 0.5;
16     for (int i = 0; i < count; i++) {
17         // 创建、添加
18         XMGPublishButton *button = [XMGPublishButton buttonWithType:UIButtonTypeCustom];
19         [button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
20         [self.view addSubview:button];
21
22         // frame
23         CGFloat buttonX = (i % maxColsCount) * buttonW;
24         CGFloat buttonY = buttonStartY + (i / maxColsCount) * buttonH;
25         button.frame = CGRectMake(buttonX, buttonY, buttonW, buttonH);
26
27         // 内容
28         [button setImage:[UIImage imageNamed:images[i]] forState:UIControlStateNormal];
29         [button setTitle:titles[i] forState:UIControlStateNormal];
30     }
  • Swift版的实现
 1   var images: Array<String> = ["publish-video", "publish-picture", "publish-text", "publish-audio", "publish-review", "publish-offline"]
 2         var titles: Array<String> = ["发视频", "发图片", "发段子", "发声音", "审帖", "离线下载"]
 3
 4         /**     #数组的创建
 5          *          var s1:Array<String> = ["1", "2", "3"]
 6          *          var s2:[String] = ["1", "2", "3"] //let
 7          *          var s3 = [String]()
 8          */
 9         var col: NSInteger = 3
10         var count: NSInteger = 6
11
12         let totalloc:Int = 3
13         var viewW:CGFloat = self.view.frame.size.width / CGFloat(col)
14         var viewH:CGFloat = viewW + 15
15
16         for var i = 0; i < count; i++
17         {
18             var row:Int = i / col
19             var loc:Int = i % col
20
21             var viewX:CGFloat = viewW * CGFloat(loc) + 30
22             var viewY:CGFloat = viewH * CGFloat(row) + 200
23
24             var publish:iCocosPublishButton = iCocosPublishButton(frame: CGRectMake(viewX - 0.5, viewY - self.view.frame.size.height, viewW - 1, viewH))
25
26             self.view.addSubview(publish)
27
28             publish.setImage(UIImage(named: images[i]), forState: UIControlState.Normal)
29             publish.setTitle(titles[i], forState: UIControlState.Normal)
30
31             publish.tag = i
32             publish.addTarget(self, action: "publishButtonClick:", forControlEvents: UIControlEvents.TouchUpInside)
33
34             self.buttons.addObject(publish)
35         }
36
37     }

版权声明:欢迎转载,请贴上源地址:http://www.cnblogs.com/iCocos/(iOS梦工厂)

更多精彩请关注github:https://github.com/al1020119?tab=repositories

时间: 2024-10-22 23:17:45

iOS开发——完整项目实战OC篇&项目总结之九宫格布局双语实现的相关文章

iOS开发——完整项目实战OC篇&amp;百思不得姐第四天

iOS开发——完整项目实战OC篇&百思不得姐第四天 上午 一:自定义按钮使用九宫格布局 二:控件不能点击 三:获取用户点击了那个按钮 四:调整按钮内部控件的位置:主流->上下 五:不能直接使用self.navigationController中或者View中获取导航控制器 方法一: 方法二: 六:布局取整 1 // 总行数 2 3 // NSUInteger rows = sqaures.count / maxCols; 4 5 // if (sqaures.count % maxCols)

iOS开发——高级技术精选OC篇&amp;Runtime之字典转模型实战

Runtime之字典转模型实战 如果您还不知道什么是runtime,那么请先看看这几篇文章: http://www.cnblogs.com/iCocos/p/4734687.html http://www.cnblogs.com/iCocos/p/4676679.html http://www.cnblogs.com/iCocos/p/4725527.html 关于runtime的详细介绍及其相关的小实例 好了,这里就不多废话了,直接开干! 先来看看怎么使用Runtime给模型类赋值 iOS开发

iOS开发——网络使用技术OC篇&amp;网络爬虫-使用正则表达式抓取网络数据

网络爬虫-使用正则表达式抓取网络数据 关于网络数据抓取不仅仅在iOS开发中有,其他开发中也有,也叫网络爬虫,大致分为两种方式实现 1:正则表达 2:利用其他语言的工具包:java/Python 先来看看网络爬虫的基本原理: 一个通用的网络爬虫的框架如图所示: 网络爬虫的基本工作流程如下: 1.首先选取一部分精心挑选的种子URL: 2.将这些URL放入待抓取URL队列: 3.从待抓取URL队列中取出待抓取在URL,解析DNS,并且得到主机的ip,并将URL对应的网页下载下来,存储进已下载网页库中.

ios开发——常用经典算法OC篇&amp;冒泡/快速

冒泡排序与快速排序 1.序言 ios开发中涉及到算法的地方还真不多,除非你的应用程序真的非常大,或者你想你的应用程序性能非常好才会去想到关于算法方面的性能优化,而在ios开发中真的能用得到的也就是关于排序的,当然如果你是做游戏的话那么你可能会涉及到不少的算法或者优化问题,但是这不是本篇文章讨论的范围. 后面的文章中,我将会给大家详细介绍八大算法. 2.冒泡排序 2.1 引出 前面的两篇博客里讲的插入排序是基于“逐个记录插入”,选择排序是基于“选择”,那么冒泡排序其实是基于“交换”.每次从第一个记

iOS开发——完整项目实战OC篇&amp;百思不得姐第一天

百思不得姐第一天 做好准备,我们要开干了...... 先声明,我不过给出过多的代码实现,除非是一些重要的(开发中常用的),或者是比较难理解的. 主要介绍一些思路和简单功能的总结,还有一些遇到的错误及处理! 上午 一:修改项目名称(之前是Buble DisplayName) 二:删除(没有launchXIB的时候会显示界面错误),再iOS8以后屏幕的显示跟启动图片有关 需要删除对应,并且设置launchImages 或者我们可以自己在images.xcasesets中新建我们的launchImag

iOS开发——完整项目实战OC篇&amp;百思不得姐第十一天

百思不得姐第十一天 一:模型中没有ID这个属性 为模型增加一个属性ID,设置名字替换 /** id */ @property (nonatomic, copy) NSString *ID; 替换: + (NSDictionary *)replacedKeyFromPropertyName {     return @{@"ID" : @"id"}; } 二:错误的将数组当作字典来用(其实就是没有数据,比如刷新数据已经没有了,或者直接就是0) 通过堆栈定位错误 最后一

iOS开发——完整项目实战OC篇&amp;百思不得姐第八天

百思不得姐第八天 上午 一:监听ScrollView停止两种方法 代码实现滚动的时候:必须要有动画 拖拽实现滚动的时候 二:ScrollView中,对应的X/Y宽高都相等的时候frmae就等一bounds 三:判断View是否在对应的View上面 1:判断父控件 2:看Window是否有值 3:是否创建加载 四:autormaticllyAdjustScrollViewInsets 五:内边距设置 1:tableView尺寸还是屏幕的尺寸(高度) 2:不被导航栏河tabBar挡住(用户能看齐所有

iOS开发——完整项目实战OC篇&amp;百思不得姐第五天

百思不得姐第五天 上午 一:蒙板 tabBarController:addsubViews Window:rootViewController Modal:presentViewController(rootViewController) 二:显示界面不是想要的效果 由于是使用Xib所以默认在ViewDidLoad中的frame是对应Xib的frame:(600,600) 我们如果要实现布局应该在-viewDidLayoutSubViews实现 但是如果真的要在ViewDidLoad里面实现我们

iOS开发——完整项目实战OC篇&amp;百思不得姐第三天

百思不得姐第三天 上午 错误:键盘处理 设置cell的分割线 方法一:添加一个View再上面 方法二:修改对应的Frame 拦截系统frame的设置,根据需求修改对应的值 不管别人传什么进来原值都不变,使用我们默认的值 优化 控制器挂掉取消 AFN内部实现 直接终止请求 暂停请求 取消请求总结 AFN返回码 debug不能全为小写 两者不同,下面的带IBOutlet的内部会隐士的强引用着他 所以调用方式是先打印后面的,就是说走完第一行之后并且没有销毁,等}走完之后就销毁 下午 设置圆形图片的简单