1.首先是uicollectionview的建立:
//建立乙個layout布局類
uicollectionviewflowlayout* layout = [[uicollectionviewflowlayout alloc]init];
//設定布局方向為垂直流布局
layout.scrolldirection = uicollectionviewscrolldirectionvertical;
//設定每個item的大小為127.5*127.5
layout.itemsize = cgsizemake(114*kwidth/750.00, 114*kwidth/750.00);
//整體view據上左下右距離
layout.sectioninset = uiedgeinsetsmake(48*kwidth/750.00, 48*kwidth/750.00, 48*kwidth/750.00,48*kwidth/750.00);
//每個item上下距離
layout.minimumlinespacing = 90*kwidth/750.00;
//每個item左右距離
layout.minimuminteritemspacing = 66*kwidth/750.00;
//建立collectionview 通過乙個布局策略layout來建立
_vibrate = [[uicollectionview alloc]initwithframe:cgrectmake(0, 0*kwidth/750.00, kwidth, kheight) collectionviewlayout:layout];
_vibrate.delegate = self;
_vibrate.datasource = self;
_vibrate.backgroundcolor = [uicolor lightgraycolor];
_vibrate.showshorizontalscrollindicator = no;
_vibrate.showsverticalscrollindicator = no;
_vibrate.userinteractionenabled = yes;
//註冊item型別 這裡使用系統的型別
[_vibrate registerclass:[vibratecollectionviewcell class] forcellwithreuseidentifier:@"vibrate"];
[self.view addsubview:_vibrate];
2.然後實現collectionview的**方法:
//返回分割槽個數
-(nsinteger)numberofsectionsincollectionview:(uicollectionview *)collectionview
//返回每個分割槽的item個數
-(nsinteger)collectionview:(uicollectionview *)collectionview numberofitemsinsection:(nsinteger)section
//返回每個item
-(uicollectionviewcell *)collectionview:(uicollectionview *)collectionview cellforitematindexpath:(nsindexpath *)indexpath
nsinteger num = indexpath.row;
cell.namelable.text = _collectionarr[num];
cell.headimageview.image = [uiimage imagenamed:[nsstring stringwithformat:@"00%@",_collectionarr[num]]];
if(_isbegin == yes )
return cell;
}3.新增手勢
3.1 抖動手勢的新增
- (void)addrecognize
//長按響應時間
_recognize.minimumpressduration = 1;
[_vibrate addgesturerecognizer:_recognize];
}- (void)longpress:(uilongpressgesturerecognizer *)longgesture else
}break;
case uigesturerecognizerstatechanged:
case uigesturerecognizerstateended:
nslog(@"3");
break;
default:
nslog(@"4");
break;}}
//開始抖動
- (void)starlongpress:(vibratecollectionviewcell*)cellelse
}//這個引數的理解比較複雜,我的理解是所在layer的時間與父layer的時間的相對速度,為1時兩者速度一樣,為2那麼父layer過了一秒,而所在layer過了兩秒(進行兩秒動畫),為0則靜止。
- (void)pause:(vibratecollectionviewcell*)cell
- (void)resume:(vibratecollectionviewcell*)cell
- (void)shakeimage:(vibratecollectionviewcell*)cell
3.2 移動手勢的新增
- (void)addlonggesture
_longgesture.minimumpressduration = 0;
[_vibrate addgesturerecognizer:_longgesture];
}//監聽手勢,並設定其允許移動cell和交換資源
- (void)handlelonggesture:(uilongpressgesturerecognizer *)longgesture else
}break;
case uigesturerecognizerstatechanged:
//移動過程當中隨時更新cell位置
[_vibrate updateinteractivemovementtargetposition:[longgesture locationinview:_vibrate]];
break;
}case uigesturerecognizerstateended:
//移動結束後關閉cell移動
[_vibrate endinteractivemovement];
break;
default:
[_vibrate endinteractivemovement];
// [_vibrate cancelinteractivemovement];
break;}}
- (bool)collectionview:(uicollectionview *)collectionview canmoveitematindexpath:(nsindexpath *)indexpath
- (void)collectionview:(uicollectionview *)collectionview moveitematindexpath:(nsindexpath *)sourceindexpath toindexpath:(nsindexpath*)destinationindexpath
android設定控制項的位置以及獲取控制項的座標
專案中遇到乙個問題,就是印表機打字的效果,然後找到了一位大神的輪子。android實用view系列 textview實現印表機效果 這樣確實實現了印表機打字的效果,但是又出現乙個問題。這個印表機的自定義view事先不能確定整體的高度,這樣,印表機每列印一行,高度就會變大一行,那麼在linear la...
筆記 安卓控制項位置以及measureSpec
1.控制項gettop getleft 方法返回是相對父布局的位置。2.父布局的座標系是外邊緣的線,而不是padding內部裡面的線。3.控制項四個頂點位置是外四個點,包括padding在內,同時控制項的長度與寬度也是包括padding在內。在activity中得到控制項的長度,寬度,由於控制項的測...
關於jquery的位置以及尺寸操作
關於尺寸操作 1.height 與width 設定或者返回元素的高度與寬度,返回結果是數值型別。設定的時候可以傳入 100px 或者100.eg width 100px width 100 window height 獲取當前螢幕高度,相當於原生的clientheight2.innerwidth 與...