專案中需要用卡片形式展示商家資訊(當然這個展示風景和人物更好),希望左右滑動移除最上面的一張,卡片可以迴圈顯示也可以不迴圈(即劃走的再不見),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 這不能從根本源頭上解決你的崩潰問題,...