iOS卡片容器iCards

2021-07-15 08:51:14 字數 1607 閱讀 6457

專案中需要用卡片形式展示商家資訊(當然這個展示風景和人物更好),希望左右滑動移除最上面的一張,卡片可以迴圈顯示也可以不迴圈(即劃走的再不見),github上有類似專案,但都耦合在viewcontroller裡,參考其實現封裝了乙個自定義view,取名icards(因**方法參考了第三方庫icarousel, 名稱也學習了)。

icards層疊顯卡片,每張卡片是任意view,你可以通過下邊這個**方法來定義:

- (uiview *)cards:(icards *)cards viewforitematindex:(nsinteger)index reusingview:(uiview *)view;
icards目前有4個屬性,分別控制是否需要迴圈顯卡片、相鄰卡片相對位移、可見的卡片數量(假設你有100張,但可見的可以只有3張)以及是否允許滑動

/** default is yes*/

@property (nonatomic, assign) bool itemsshouldshowedcyclically;

/** we will creat this number of views, so not too many; default is 3 */

@property (nonatomic, assign) nsinteger numberofvisibleitems;

@property (nonatomic, assign) cgsize offset;

/** if there is only one card, maybe you don't want to swipe it; */

@property (nonatomic, assign) bool swipenabled;

有兩個方法,見名知義,不多說:

-(void)reloaddata;

-(uiview *)currentcard;

有兩個資料來源**方法:

- (nsinteger)numberofitemsincards:(icards *)cards;

- (uiview *)cards:(icards *)cards viewforitematindex:(nsinteger)index reusingview:(uiview *)view;

4個可選輔助**方法:

- (void)cards:(icards *)cards beginswipingitematindex:(nsinteger)index;

- (void)cards:(icards *)cards didremoveditematindex:(nsinteger)index;

- (void)cards:(icards *)cards didleftremoveditematindex:(nsinteger)index;

- (void)cards:(icards *)cards didrightremoveditematindex:(nsinteger)index;

以下是效果圖:

icards同樣做了pod支援。原始碼參見github:icards

iOS基礎之容器

cocoa touch基礎框架提供比較常用的容器類物件 nsarray nsdicitonary nsset nsindex 1.nsarray和它的子類nsmutablearray 它們相當於陣列,可以持有不同型別的objective c物件,其他型別。比如說c型別的整型 浮點型 列舉型和結構體指...

iOS開發 KVO觀察容器類

nsmutablearray nsmutabledictionary nsmutableset project型別為mac os x commandline tooles首先實現資料類,有三個屬性,分別是這三個集合類的物件 dataclass.h dataclass.h kvo qhy create...

iOS基礎 可變和不可變容器

一般後台給介面,用的是陣列和字典,正常來說都不是可變的,當你在接受資料的時候 很多人會想著強制轉換 比如 nsmutabledictionary data nsmutabledictionary self model item objectforkey data 這不能從根本源頭上解決你的崩潰問題,...