关闭

iOS:九宫格算法

标签: 九宫格算法iOS算法九宫格
397人阅读 评论(0) 收藏 举报

九宫格算法的目的就是实现下图所示的布局效果


找规律:

0号控件的x = 横向间距 + 0 * (控件宽度 + 横向间距)
1号控件的x = 横向间距 + 1 * (控件宽度 + 横向间距)
2号控件的x = 横向间距 + 2 * (控件宽度 + 横向间距)
规律:
n号控件的x = 横向间距 + 列数 * (控件宽度 + 横向间距)

0号控件的y = 纵向间距 + 0 * (控件高度 + 纵向间距)
4号控件的y = 纵向间距 + 1 * (控件高度 + 纵向间距)
8号控件的y = 纵向间距 + 2 * (控件高度 + 纵向间距)
规律:
n号控件的y = 纵向间距 + 行数 * (控件高度 + 纵向间距)

xib视图的.h文件:

#import <UIKit/UIKit.h>

@interface MCView : UIView
@property(nonatomic,assign)NSInteger index;
@end

xib视图的.m文件:

#import "MCView.h"

@interface MCView ()
@property (weak, nonatomic) IBOutlet UILabel *numLabel;

@end

@implementation MCView

- (instancetype)init{
    return [[[NSBundle mainBundle] loadNibNamed:@"MCView" owner:nil options:nil] lastObject];
}

- (void)setIndex:(NSInteger)index{
    _index = index;
    self.numLabel.text = [NSString stringWithFormat:@"%ld",(long)index];
}
@end


主控器中的视图:


<pre name="code" class="objc">#import "ViewController.h"
#import "MCView.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
//xib视图的宽
#define kXibViewW 70
//xib视图的高
#define kXibViewH 70
//纵向间距
#define kMarginY 30
//列数 也就是每一行放几个视图
#define kColCount 4
//xib视图的个数
#define sum 19
    //横向间距
    CGFloat marginX = (self.view.bounds.size.width - kColCount * kXibViewW) / (kColCount + 1);
    for (int i = 0; i < sum; i++) {
        //列数
        int col = i % kColCount;
        //行数
        int row = i / kColCount;
        //xib视图的x值(横向间距 + 列数 * (横向间距 + 视图宽度))
        CGFloat xibViewX = marginX + col * (marginX + kXibViewW);
        //xib视图的y值(纵向间距 + 行数 * (纵向间距 + 视图宽度))
        CGFloat xibViewY = kMarginY + row * (kMarginY + kXibViewH);
        MCView *view = [[MCView alloc] init];
        //设置xib视图的frame值
        view.frame = CGRectMake(xibViewX, xibViewY, kXibViewW, kXibViewH);
        view.index = i;
        //将视图添加到父视图
        [self.view addSubview:view];
    }
}
@end






0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

UITableView制作九宫格视图

1:创建实体 #import @interface Shop : NSObject @property (nonatomic, copy) NSString *icon; @property (...
  • potato512
  • potato512
  • 2014-05-16 17:12
  • 759

IOS-九宫格坐标计算

九宫格在IOS中是很常都会用到,所以对于九宫格的算法也就必须要掌握,这方便以后的快速开发。在这里只是简单的实现,如何创建出所需要的视图界面。 一、开发出类似效果 二、分析 注意看每一个ui...
  • emperorzhi
  • emperorzhi
  • 2015-04-24 18:03
  • 3329

iOS开发:九宫格灵活布局

实现一行不同格子数的九宫格布局。 预览 思路 手动添加UI控件用除法和求余运算计算格子坐标 - (void)viewDidLoad { [super viewD...
  • u012234115
  • u012234115
  • 2016-06-12 11:15
  • 536

九宫格算法理解

  • xiuye2015
  • xiuye2015
  • 2016-10-23 17:34
  • 2188

一道九宫格算法面试题

前言一前公司同事把此题放在群里,求大家帮忙解答。因为没有其他条件和说明。我的第一印象就是:方格里应该填1~9整数中剩下的1~8,且不能重复。于是拿着笔进行了一通计算。。。后来发现无解。接着,就想里面的...
  • a10615
  • a10615
  • 2016-08-12 03:35
  • 2584

IOS_UI_控件总结+九宫格+仿QQ好友列表+小图片拉伸

H:/0718/00_UIKit_控件总结.m一、UIView常见属性 1.frame 位置和尺寸(以父控件的左上角为原点(0,0)) 2.center 中点(以父控件的左上角为原点(0,0)) 3...
  • u012576807
  • u012576807
  • 2014-05-28 23:08
  • 1679

打造流畅九宫格抽奖活动

因为company项目中需要做九宫格抽奖活动,以前都没有做过类似的功能,虽然之前在浏览大神们的博客中,无意中也看到了好多关于抽奖的项目,但因为项目中没有需要,一直都没有点击进去看。这次不去看估计不行。...
  • huangxuanheng
  • huangxuanheng
  • 2016-11-05 20:51
  • 4575

iOS 自定义九宫格,行、列可变

项目开发中,难免会遇到类似于九宫格这样的布局。很多元素均匀排列,对于一页展示不完的用滚动视图展示。这种一般用于有几大功能模块,或者电子商务方面商品展示。实现方式有多种,但各有局限性。下面就我知道的做一...
  • Micheal_ZJ
  • Micheal_ZJ
  • 2015-12-14 14:57
  • 578

数独(九宫格)的高效算法

比较容易想到的是用回溯法,从第一个格子开始到最后一格,每个格子由1到9进行尝试,看能否填下去,不能就回头。思路简单,可是执行时间太长了。有没有更加高效的搜索算法了?当然有。       我们仅需...
  • li_wei_quan
  • li_wei_quan
  • 2015-12-19 21:06
  • 6785

算法提高 9-1九宫格

问题描述   九宫格。输入1-9这9个数字的一种任意排序,构成3*3二维数组。如果每行、每列以及对角线之和都相等,打印1。否则打印0。 样例输出 与上面的样例输入对应的输出。 例: 数据规模...
  • qq_30091945
  • qq_30091945
  • 2017-02-11 18:43
  • 735
    个人资料
    • 访问:16285次
    • 积分:362
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:0篇
    • 译文:0篇
    • 评论:3条
    最新评论