iOS开发攻城狮的集散地

模仿VILLOID照片模版

2017-03-12  本文已影响12人  yue博客

VILLOID APP中有一些如下图所示的图片模板

一个长为a,宽为b(a,b为单位长度u的整数倍)的大矩形

使用边长为u的整数倍的小矩形来填充满这个大矩形,或者说,把这个大矩形分割成n个边长为u的整数倍的小矩形(称为分割更为合适)

列举出所有的情况

声明一个结构体 ItemLayout表示小矩形的位置和大小  以大矩形左上角为原点(0,0),以1的整数倍表示宽和高

struct ItemLayout {

int x,y;

int w,h;

}

所有的情况会是这样的数据结构  二维数组:

{ {ItemLayout,…,ItemLayout}, … , {ItemLayout,…,ItemLayout}, }

我最初的设想是通过递归方法,传入行数和列数,自动计算出所有的分割方式,但是思路一直没有理清,在网上查了一些东西,比如这篇:http://download.csdn.net/detail/whuangweimin1/3370405 不过看起来比较吃力。

现在我也还没有写出来我所设想的这个递归方法,目前用的是简单直接的方法:手动列举(有点low,不过管用而且比较快,但是对于行列数超过3的就不适用了)

@{

@"rowNumber":@(2),

@"arrangeNumber":@(2),

@"itemCoordinaties":@[@{@"x":@(0),@"y":@(0),@"w":@(1),@"h":@(2)},

@{@"x":@(1),@"y":@(0),@"w":@(1),@"h":@(1)},

@{@"x":@(1),@"y":@(1),@"w":@(1),@"h":@(1)},

]

}

这是2行2列,的左边1*2的矩形,右边是两个1*1的矩形的分割方式,效果如下:

我以同样的格式手写了6、7种分割方式,如下图

模版展示 图片拖动

demo

上一篇下一篇

猜你喜欢

热点阅读