關於 控制項抖動以及 互換位置的說寫

2021-07-24 11:33:24 字數 3722 閱讀 5370

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 與...