热门标签 | HotTags
当前位置:  开发笔记 > IOS > 正文

IOS九宫格布局实现方法

这篇文章主要介绍了IOS九宫格布局实现方法,及实例代码,需要的朋友可以参考下

以前刚开始搞iOS的时候大部分都是通过计算frame来布局视图,搞着搞着貌似都是用自动布局来搞定了,因为自动布局实在太方便、太好用了,所以当我昨天突然回看以前代码的时候突然看到了以前写的九宫格布局,感觉很多东西都忘了,所以今天特意在这里记录一下,并且通过几个简单的宏定义来完成布局的需求,具体大家看代码吧,都有注释 很好懂:

//
// ButtonContainerView.h
// chemuchao
//
// Created by 遇见远洋 on 16/3/7.
// Copyright © 2016年 zhaoxiaolu. All rights reserved.
//

#import 
//按钮点击block
typedef void(^spitlotBtnClick)(UIButton * btn);
@interface ButtonContainerView : UIView
@property (nonatomic,copy)spitlotBtnClick spitlotBlock;/**<<#展示对话内容的tableview#>*/

@end

这里给大家推荐一个写注释的好方法吧,在声明属性的时候,我们如果想在别的地方调用这个属性的时候在下方有提示 如图:

只需要跟我在上面声明属性的时候一样 在最后加上

/**<这是要写的提示文字*/

使用这种方式声明的属性,在外面调用的时候就会有提示,好像跑题了,接下来点M的代码吧:

//
// ButtonContainerView.m
// chemuchao
//
// Created by 遇见远洋 on 16/3/7.
// Copyright © 2016年 zhaoxiaolu. All rights reserved.
//

#import "ButtonContainerView.h"
#import "UIView+Extension.h"
//状态栏高度
#define kStateHeight 20

//总行数
#define kRows 2

//总列数
#define kCols 4

//九宫格个数
#define kCount 8

//九宫格之间的间隙
#define kMargin 5

//字体大小
#define kFont15 [UIFont systemFontOfSize:15]

@interface ButtonContainerView ()
@property (nonatomic,strong)NSMutableArray * btns;
@property (nonatomic,strong)NSArray * btnTitles;

@end
@implementation ButtonContainerView

- (NSMutableArray *)btns
{
  if (!_btns) {
    _btns = [NSMutableArray array];
  }
  return _btns;
}

-(NSArray *)btnTitles {
  if (!_btnTitles) {
    _btnTitles = @[@"堵成狗",@"堵成翔",@"路太窄",@"没灯",@"路不平",@"积水多",@"颠簸",@"路太脏"];
  }
  return _btnTitles;
}
- (instancetype)initWithFrame:(CGRect)frame{
  if (self = [super initWithFrame:frame]) {
    [self setupUI];
  }
  return self;
}

- (void)setupUI {
  for (int i = 0; i 

你只需要更换几个宏定义就可以定制你的九宫格布局了,例如总行数、总列数、九宫格个数,简单吧 复用性还是很高的,当然对于使用自动布局的你来说,可以无视我。

希望通过此文能帮助大家开发 IOS九宫格的开发,谢谢大家对本站的支持!


推荐阅读
  • 本文介绍了如何使用jQuery根据元素的类型(如复选框)和标签名(如段落)来获取DOM对象。这有助于更高效地操作网页中的特定元素。 ... [详细]
  • C++实现经典排序算法
    本文详细介绍了七种经典的排序算法及其性能分析。每种算法的平均、最坏和最好情况的时间复杂度、辅助空间需求以及稳定性都被列出,帮助读者全面了解这些排序方法的特点。 ... [详细]
  • C++: 实现基于类的四面体体积计算
    本文介绍如何使用C++编程语言,通过定义类和方法来计算由四个三维坐标点构成的四面体体积。文中详细解释了四面体体积的数学公式,并提供了两种不同的实现方式。 ... [详细]
  • 本文介绍如何通过Windows批处理脚本定期检查并重启Java应用程序,确保其持续稳定运行。脚本每30分钟检查一次,并在需要时重启Java程序。同时,它会将任务结果发送到Redis。 ... [详细]
  • 如何优化2060显卡设置以提升《Apex英雄》游戏体验
    《Apex英雄》作为一款热门的战术竞技游戏,吸引了大量玩家。本文将探讨如何通过优化GeForce RTX 2060显卡设置,确保在《Apex英雄》中获得最佳性能和流畅的游戏体验。 ... [详细]
  • 本章将深入探讨移动 UI 设计的核心原则,帮助开发者构建简洁、高效且用户友好的界面。通过学习设计规则和用户体验优化技巧,您将能够创建出既美观又实用的移动应用。 ... [详细]
  • 本文介绍如何通过SQL查询从JDE(JD Edwards)系统中提取所有字典数据,涵盖关键表的关联和字段选择。具体包括F0004和F0005系列表的数据提取方法。 ... [详细]
  • 如何高效创建和使用字体图标
    在Web和移动开发中,为什么选择字体图标?主要原因是其卓越的性能,可以显著减少HTTP请求并优化页面加载速度。本文详细介绍了从设计到应用的字体图标制作流程,并提供了专业建议。 ... [详细]
  • 本文详细介绍了如何通过命令行启动MySQL服务,包括打开命令提示符窗口、进入MySQL的bin目录、输入正确的连接命令以及注意事项。文中还提供了更多相关命令的资源链接。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 本文将详细介绍在Windows 7环境下,检查U盘启动盘是否制作成功的多种方法,包括通过BIOS设置和使用模拟启动工具。 ... [详细]
  • 本文介绍如何使用 NSTimer 实现倒计时功能,详细讲解了初始化方法、参数配置以及具体实现步骤。通过示例代码展示如何创建和管理定时器,确保在指定时间间隔内执行特定任务。 ... [详细]
  • 本文介绍了在Windows环境下使用pydoc工具的方法,并详细解释了如何通过命令行和浏览器查看Python内置函数的文档。此外,还提供了关于raw_input和open函数的具体用法和功能说明。 ... [详细]
  • 题目Link题目学习link1题目学习link2题目学习link3%%%受益匪浅!-----&# ... [详细]
  • 本文探讨了 C++ 中普通数组和标准库类型 vector 的初始化方法。普通数组具有固定长度,而 vector 是一种可扩展的容器,允许动态调整大小。文章详细介绍了不同初始化方式及其应用场景,并提供了代码示例以加深理解。 ... [详细]
author-avatar
月芽2502915393
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有