UIScrollView實現重用

2021-06-21 21:08:53 字數 3354 閱讀 5076

#import

@inte***ce test19viewcell : uiview

// 索引

@property (nonatomic, assign)

nsuinteger

index;

// 文字

@property (nonatomic, copy)

nsstring

*text;

// 文字控制項

@property (nonatomic, retain)

uilabel

*textlabel;

// 名稱

@property (nonatomic, retain)

nsstring

*imagename;

// 控制項 

@property (nonatomic, retain)

uiimageview

*imageview;

@end

#import "test19viewcell.h"

@implementation test19viewcell

@synthesize index =

_index;

@synthesize textlabel = _textlabel;

@synthesize text =

_text;

@synthesize imagename = _imagename;

@synthesize imageview = _imageview;

- (void)dealloc

- (id)init

return self; }

- (uilabel *)textlabel

return _textlabel; }

- (void)settext:(nsstring *)text

}- (uiimageview *)imageview

return _imageview; }

- (void)setimagename:(nsstring *)imagename}

@end

#import

@inte***ce

test19viewcontroller : uiviewcontroller

// 資料來源

@property (nonatomic, retain)

nsmutablearray

*datasource;

// 可見的cell集合

@property (nonatomic, retain)

nsmutableset

*visiblecells;

// 可迴圈的cell集合

@property (nonatomic, retain)

nsmutableset

*recycledcells;

// uiscrollview

@property (nonatomic, retain)

uiscrollview

*scrollview;

@end

#import "test19viewcontroller.h"

#import "test19viewcell.h"

#define kcellsize cgsizemake(self.view.frame.size.width, 44)

#define kcellseparatepadding 

1.0

@inte***ce test19viewcontroller()

// 根據下標設定對應的frame、index、text

- (void)configurecell:(test19viewcell *)cell forindex:(nsuinteger)index;

// 判斷index對應的檢視是否在可見佇列中

- (bool)isvisiblecellforindex:(nsuinteger)index;

// 重用

- (id)dequeuereusablecell;

// 顯示文字

- (void)showcells;

@end

@implementation test19viewcontroller

@synthesize datasource = _datasource;

@synthesize visiblecells = _visiblecells;

@synthesize recycledcells = _recycledcells;

@synthesize scrollview = _scrollview;

- (void)dealloc

- (void)loadview

- (void)viewdidload

#pragma mark - private custom methods

// 根據下標設定對應的frame、index、text

- (void)configurecell:(test19viewcell *)cell forindex:(nsuinteger)index

// 判斷index對應的檢視是否在可見佇列中

- (bool)isvisiblecellforindex:(nsuinteger)index

}return isvisible;

}// 重用

- (id)dequeuereusablecell

return cell;

}// 用於測試實際建立cell的數量

static

int testcount = 0;

- (void)showcells }

// 可見檢視的集合減去迴圈佇列的集合

[_visiblecells minusset

:_recycledcells];

// 新增缺少的cell

for (int index = firstneededcellindex; index <= lastneededicellindex; index ++)

// 設定下標、frame、text

[self

configurecell:cell forindex:index];

// 將其新增到檢視中

[_scrollview

addsubview:cell];

// 加入到可見佇列中

[_visiblecells

addobject:cell];

} }}#pragma mark - uiscrollviewdelegate methods

- (void)scrollviewdidscroll:(uiscrollview *)scrollview

@end

UIScrollView分頁的實現

uiscrollview的經典例子就是safari的編輯模式了 uiscrollview可以垂直,水平滾動。如果屬性pageenabled yes,則設定其為分頁模式,那麼沒滾動一次就是一頁,垂直方向上的一頁就是uiscrollview的高度,水平方向就是其寬度。我們可以設定contentsize,...

UIScrollView分頁的實現

uiscrollview的經典例子就是safari的編輯模式了 uiscrollview可以垂直,水平滾動。如果屬性pageenabled yes,則設定其為分頁模式,那麼沒滾動一次就是一頁,垂直方向上的一頁就是uiscrollview的高度,水平方向就是其寬度。我們可以設定contentsize,...

IOS 利用UIScrollview實現滑動篩選

在ios中經常會用到滑動篩選的功能,如下 利用uiscrollview控制項可以實現上述功能,思路大致是 建立乙個uiview,寬度為螢幕寬度320,高度為以上圖的背景圖高度,在uiview上新增乙個 uiscrollview寬度為乙個型別的寬度,設定uiscrollview自動停止滾動,設定兩邊被...