兩種方法使用for迴圈動態建立按鈕(類似九宮格)

2021-07-11 04:14:51 字數 1790 閱讀 8251

比如我需要根據陣列中的元素個數(字串中總字元個數)建立按鈕:

nsstring *strselect=@"helloworld2016";

方法一:

//把字串擷取出來放在可變陣列中

nsmutablearray *array=[nsmutablearrayarraywithcapacity:0];

nsinteger sublength=1;

for(int i=0;i<_strselect.length;i++)

cgfloat w =1;//儲存前乙個button的寬以及前乙個button距離螢幕邊緣的距離

cgfloat h =2;//用來控制button距離父檢視的高

for (int i =0; i < array.count; i++) ;

// cgfloat length = [array[i] boundingrectwithsize:cgsizemake(self.viewworld.frame.size.width, 2000) options:nsstringdrawinguseslinefragmentorigin attributes:attributes context:nil].size.width;

//設定button的frame

// button.frame = cgrectmake(w, h, length + 55 , 80);

//當button的位置超出檢視邊緣時換行

// if(w + length + 15 > 320)

//設定button的frame

button.frame =cgrectmake(w, h,80 ,80);

//當button的位置超出檢視邊緣時換行

if(w +80 >self.viewworld.frame.size.width)

w = button.frame.size.width + button.frame.origin.x;

[self.viewworldaddsubview:button];

}

方法二:

//建立乙個陣列,用來儲存按鈕上的文字

nsmutablearray *array=[[nsmutablearray alloc]initwithcapacity:0];

//擷取(分割)字串

nsinteger strlenth=1;

for (int i=0; i<_strselect.length; i++)

//使用者互動

self.viewworld.userinteractionenabled=yes;

//清除原有的待選按鈕中的所有自控件

[self.viewworld.subviews makeobjectsperformselector:@selector(removefromsuperview)];

//迴圈建立待選按鈕

//制定每個待選按鈕的大小

cgfloat opw=70;

cgfloat oph=70;

//制定每個待選按鈕之間的間距

cgfloat margin=-1;

//指定由每行多少個按鈕

int colum=8;

//計算出每行第乙個按鈕距離左邊的距離(意思就是所有按鈕一起居中啦)

cgfloat marlft=(self.viewworld.frame.size.width-colum*opw-(colum-1)*margin)/2;

for (int i=0; i

建立執行緒的兩種方法

有兩種方式 從tread中派生出新的子類 實現runnable介面 還有一種習慣用法 一 從tread中派生出新的子類 建立片段 給執行緒起名 a,並建立 new 型別 執行緒名字 start 完整的建立乙個執行緒,並呼叫 為了給執行緒起名字,建立了域name,並類裡邊建立了構造器 public c...

建立樹型的兩種方法

建立父節點樹形陣列 引數 ar 陣列,鄰接列表方式組織的資料 id 陣列中作為主鍵的下標或關聯鍵名 pid 陣列中作為父鍵的下標或關聯鍵名 返回 多維陣列 function find parent ar,id id pid pid return t 建立子節點樹形陣列 引數 ar 陣列,鄰接列表方式...

AO建立IFeature的兩種方法

原文 ao建立ifeature的兩種方法 在arcgis resouce center中,esri介紹了兩種建立feature的方法 可以在本地的geodatabase和sde的featureclass 第一種是ifeatureclass.createfeature,在這種方法最後需要加上ifeat...