根据个数创建按钮图标(上图下字)

/**
 * 创建方块view.m
 */
- (void)createSquares:(NSArray *)sqaures
{
    // 一行最多4列
    int maxCols = 4;

    // 宽度和高度
    CGFloat buttonW = DQScreenW / maxCols;
    CGFloat buttonH = buttonW;

    for (int i = 0; i<sqaures.count; i++) {
        // 创建按钮
        DQSqaureButton *button = [DQSqaureButton buttonWithType:UIButtonTypeCustom];
        // 监听点击
        [button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
        // 传递模型
        button.square = sqaures[i];
        [self addSubview:button];

        // 计算frame
        int col = i % maxCols;
        int row = i / maxCols;

        button.x = col * buttonW;
        button.y = row * buttonH;
        button.width = buttonW;
        button.height = buttonH;

        //计算高度方式一(每创建一个就计算一次高度)
        //self.height = CGRectGetMaxY(button.frame);
    }

//计算总行数方式一  start
    // 8个方块, 每行显示4个, 计算行数 8/4 == 2 2
    // 9个方块, 每行显示4个, 计算行数 9/4 == 2 3
    // 7个方块, 每行显示4个, 计算行数 7/4 == 1 2

    // 总行数 能整除就取结果,不能整除就取结果+1
//    NSUInteger rows = sqaures.count / maxCols;
//    if (sqaures.count % maxCols) { // 不能整除, + 1
//        rows++;
//    }

//计算总行数方式一  end

//计算总行数方式二
    // 总页数 == (总个数 + 每页的最大数 - 1) / 每页最大数
    NSUInteger rows = (sqaures.count + maxCols - 1) / maxCols;

    // 计算footer的高度方式二
    self.height = rows * buttonH;

    // 重绘
    [self setNeedsDisplay];
}
//自定义的DQSqaureButton
- (void)setup
{
    self.titleLabel.textAlignment = NSTextAlignmentCenter;
    [self setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    self.titleLabel.font = [UIFont systemFontOfSize:15];
    [self setBackgroundImage:[UIImage imageNamed:@"mainCellBackground"] forState:UIControlStateNormal];
}

- (instancetype)initWithFrame:(CGRect)frame
{
    if (self = [super initWithFrame:frame]) {
        [self setup];
    }
    return self;
}

- (void)awakeFromNib
{
    [self setup];
}

- (void)layoutSubviews
{
    [super layoutSubviews];

    // 调整图片
    self.imageView.y = self.height * 0.15;
    self.imageView.width = self.width * 0.5;
    self.imageView.height = self.imageView.width;
    self.imageView.centerX = self.width * 0.5;

    // 调整文字
    self.titleLabel.x = 0;
    self.titleLabel.y = CGRectGetMaxY(self.imageView.frame);
    self.titleLabel.width = self.width;
    self.titleLabel.height = self.height - self.titleLabel.y;
}

- (void)setSquare:(DQSquare *)square
{
    _square = square;

    [self setTitle:square.name forState:UIControlStateNormal];
    // 利用SDWebImage给按钮设置image
    [self sd_setImageWithURL:[NSURL URLWithString:square.icon] forState:UIControlStateNormal];
}

 
时间: 2024-11-03 21:55:18

根据个数创建按钮图标(上图下字)的相关文章

VC 对话框程序添加工具栏按钮图标及其按钮tooltip

注意:本人使用VC++2010开发环境进行测试. 在使用VC开发对话框程序时不像开发单文档程序和多文档程序那么方便,很多资源都需要自己手动添加.最近在开发一个程序时,想尝试在对话框程序里面添加 工具栏 及其 按钮tooltip,于是便有了这篇文章,希望把经验总结下来以方便自己以后查询以及各位同仁查询! 一.首先建立一个对话框程序 1.添加工具栏资源,并在工具栏资源里添加几个按钮,并将按钮的width 和 height 改为24,也可以根据自己的需要更改尺寸,同时,还要为相应的按钮设置一个ID.具

IOS 开发笔记-基础 UI(5)使用代码创建按钮

在实际开发中,很多的时候是需要手动写代码来创建按钮的. 在开发过程中,并不是每次都通过storyboard拖控件完成UI界面,因为storyboard上面的界面是“固定死”的,有时候可能会在程序运行过程中动态地添加一些新的控件到界面上,比如QQ,微信的聊天信息,是有人发出一条信息后才动态显示出来的.因此,需要掌握如何用代码动态地添加控件.实际上,storyboard的本质就是根据图形界面描述转成相应的代码(xml 文件).还有一个原因,就是有的国内的公司,或者一些 IOS 开发的团队,并不使用故

jQuery Mobile 按钮图标

jQuery Mobile 提供的一套图标可令您的按钮更具吸引力. 1.为 jQuery Mobile 按钮添加图标 如需向您的按钮添加图标,请使用 data-icon 属性:(您也可以在 <button> 或 <input> 元素中使用 data-icon 属性.) <div data-role="page" id="pageone"> <div data-role="content"> <

创建快捷图标

原理: 在看安卓上层源码的时候:桌面应用在Launcher2包中E:\系统上层所有应用的源代码\Launcher2 (安卓系统的默认桌面也是一个手机应用程序) 查看源码可知,在Launcher2的清单文件中注册了一个广播接受者  (见附录) 卸载桌面应用: 在shell模式下卸载系统的桌面应用 过程:cd  /system/app------>ls可以看到Launch2.apk------------->mount -o remount rw /system--------->rm -r

开发进阶05_代码创建按钮和文本框

在控制器的view加载完毕的时候会调用一次viewDidLoad方法 #pragma mark 控制器的view加载完毕的时候会调用一次 - (void)viewDidLoad { [super viewDidLoad]; //1.创建按钮 //1.1.创建  UIButton *btn = [[UIButton alloc] init]; //1.2.设置按钮的尺寸和位置 btn.frame = CGRectMake(0, 20, 100, 100); //1.3.设置按钮普通状态下的属性 /

C语言调用WIN32 API教程之2创建按钮

上一节学习了创建窗口,下面我们来在窗口上创建按钮,并进行点击动作. 1,打开VC++6.0,点击 文件->打开工作空间 选择example1,点击确定,打开工程. 2,添加代码 首先定义全局变量 HWND button1; 更改回调函数如下 LRESULT CALLBACK WinSunProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)//回调函数定义{ switch(uMsg) { case WM_CREATE: button1=Crea

【Cocos2dx】使用CCControlButton创建按钮、按钮点击事件,点击事件中的组件获取,setPosition的坐标问题

按钮不仅在游戏,在任何地方都是不可或缺却又是最基本的东西.在游戏引擎Cocos2dx中也不例外. 下面用一个例子说明Cocos2dx中如何使用按钮,同时,如果在Cocos2dx中获取层,也就是场景.舞台中的组件. 如下图,有一个按钮Clickme,被点击时候与不被点击的时间,其背景图片是不同的.其实就是资源文件夹Resource中早就被玩坏的两个图片,一张CloseNormal.png一张CloseSelected.png被拉伸后的惨状. Cocos2dx的资源文件夹在<[Cocos2dx]资源

Xcode--代码创建按钮,文本输入框

//创建按钮 UIButton *btn = [[UIButton alloc] init]; btn.frame = CGRectMake(0, 0, 100, 100); // 设置按钮在普通状态下的属性 // 设置背景图片 UIImage *normal = [UIImage imageNamed:@"btn_01.png"]; [btn setBackgroundImage:normal forState:UIControlStateNormal]; [btn setTitle

Excel创建按钮调用宏

今天匆匆忙忙写了个宏,但是发现以前用来创建按钮的开发工具菜单不见了. 找了上十分钟把Excel翻了个遍,终于在Excel选项的常用中找到了,先Mark下,留个同样找不到的童鞋. 截几个图,方便大家一下子能找到哈: 接下来,你能在菜单栏看到开发工具了: 开发工具中有我们想要的各种按钮和控件,包括宏: 哈哈,恭喜你和我一样,找到按钮了,那接下来如何调用呢,下面以ActiveX控件中的按钮为例: 1.创建按钮控件并更名Index 2.双击按钮进入宏编辑模式 3.编辑你想要的VBA代码 4.退出设计模式