iOS-UICollectionView

  • UICollectionView使用注意點(diǎn)

  • 創(chuàng)建UICollectionView必須要有布局參數(shù)

  • cell必須通過(guò)注冊(cè)

  • cell必須自定義,系統(tǒng)cell沒(méi)有任何子控件

  • 示例

#import "ViewController.h"
#import "PhotoCell.h"
@interface ViewController ()<UICollectionViewDataSource>

@end
static NSString * const ID = @"cell";

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //函數(shù)式編程思想(高聚合):把很多功能放在一個(gè)函數(shù)塊(block塊)去處理 多見(jiàn)于swift
    UICollectionViewFlowLayout *layout = ({
        UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc]init];
        //設(shè)置水平滾動(dòng)
        layout.scrollDirection  =  UICollectionViewScrollDirectionHorizontal;
        //設(shè)置cell的尺寸
        layout.itemSize = CGSizeMake(160, 160);
        CGFloat margin = ([UIScreen mainScreen].bounds.size.width - 160) *0.5;
        //設(shè)置內(nèi)邊距
        layout.sectionInset = UIEdgeInsetsMake(0, margin, 0, margin);
        //設(shè)置最小行間距
        layout.minimumLineSpacing = 50;
        layout;
    });
    UICollectionView *collectionView = ({
        UICollectionView *collectionView = [[UICollectionView alloc]initWithFrame:CGRectZero collectionViewLayout:layout];
        collectionView.backgroundColor = [UIColor blueColor];
        collectionView.center = self.view.center;
        collectionView.bounds =CGRectMake(0, 0, self.view.bounds.size.width, 200);
        [self.view addSubview:collectionView];
        collectionView;
        
    });
    
    //關(guān)閉水平滾動(dòng)條
    collectionView.showsHorizontalScrollIndicator = NO;
    collectionView.dataSource = self;
    //注冊(cè)nib
    [collectionView registerNib:[UINib nibWithNibName:NSStringFromClass([PhotoCell class]) bundle:nil] forCellWithReuseIdentifier:ID];
    
}
//有多少個(gè)cell
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
    return 10;
}
//cell樣式
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
    PhotoCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:ID forIndexPath:indexPath];
    NSString *imageName = [NSString stringWithFormat:@"%ld",indexPath.item + 1];
    cell.image = [UIImage imageNamed:imageName];
    return cell;
}
@end
  • UICollectionViewFlowLayout自定義布局

    • UICollectionViewFlowLayout自定義布局必須知道的5個(gè)方法

// 何時(shí)調(diào)用:collectionView第一次布局,collectionView刷新的時(shí)候也會(huì)調(diào)用
// 作用:計(jì)算cell的布局,條件:cell的位置是固定不變
 - (void)prepareLayout
{
    [super prepareLayout];

}
// 作用:指定一段區(qū)域給你這段區(qū)域內(nèi)cell的尺寸
// 可以一次性返回所有cell尺寸,也可以每隔一個(gè)距離返回cell
/**
 UICollectionViewLayoutAttributes:確定cell的尺寸
 一個(gè)UICollectionViewLayoutAttributes對(duì)象就對(duì)應(yīng)一個(gè)cell
 拿到UICollectionViewLayoutAttributes相當(dāng)于拿到cell
 */
- (nullable NSArray<__kindof UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect
{
    NSArray *attrs = [super layoutAttributesForElementsInRect:CGRectMake(0, 0, MAXFLOAT, MAXFLOAT)];
    return attrs;
    
}
// 何時(shí):用戶(hù)手指一松開(kāi)就會(huì)調(diào)用
// 作用:確定最終偏移量
- (CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity{

    // 拖動(dòng)比較快 最終偏移量 不等于 手指離開(kāi)時(shí)偏移量
    
    // 最終偏移量
    CGPoint targetP = [super targetContentOffsetForProposedContentOffset:proposedContentOffset withScrollingVelocity:velocity];
    
    // 獲取collectionView偏移量
    NSLog(@"%@ %@",NSStringFromCGPoint(targetP),NSStringFromCGPoint(self.collectionView.contentOffset));
    
    return CGPointZero;
}

// Invalidate:刷新
// 在滾動(dòng)的時(shí)候是否允許刷新布局
- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds{
    return YES;
}
// 計(jì)算collectionView滾動(dòng)范圍
- (CGSize)collectionViewContentSize{
    return [super collectionViewContentSize];
}

demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末砾隅,一起剝皮案震驚了整個(gè)濱河市镊辕,隨后出現(xiàn)的幾起案子舷手,更是在濱河造成了極大的恐慌,老刑警劉巖啦辐,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡槽袄,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)锋谐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)遍尺,“玉大人,你說(shuō)我怎么就攤上這事涮拗∏罚” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵三热,是天一觀(guān)的道長(zhǎng)鼓择。 經(jīng)常有香客問(wèn)我,道長(zhǎng)就漾,這世上最難降的妖魔是什么呐能? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮抑堡,結(jié)果婚禮上摆出,老公的妹妹穿的比我還像新娘朗徊。我一直安慰自己,他們只是感情好偎漫,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布荣倾。 她就那樣靜靜地躺著,像睡著了一般骑丸。 火紅的嫁衣襯著肌膚如雪舌仍。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,816評(píng)論 1 290
  • 那天通危,我揣著相機(jī)與錄音铸豁,去河邊找鬼。 笑死菊碟,一個(gè)胖子當(dāng)著我的面吹牛节芥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播逆害,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼头镊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了魄幕?” 一聲冷哼從身側(cè)響起相艇,我...
    開(kāi)封第一講書(shū)人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎纯陨,沒(méi)想到半個(gè)月后坛芽,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡翼抠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年咙轩,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阴颖。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡活喊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出量愧,到底是詐尸還是另有隱情钾菊,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布侠畔,位于F島的核電站结缚,受9級(jí)特大地震影響损晤,放射性物質(zhì)發(fā)生泄漏软棺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一尤勋、第九天 我趴在偏房一處隱蔽的房頂上張望喘落。 院中可真熱鬧茵宪,春花似錦、人聲如沸瘦棋。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)赌朋。三九已至凰狞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間沛慢,已是汗流浹背赡若。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留团甲,地道東北人逾冬。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像躺苦,于是被迫代替她去往敵國(guó)和親身腻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容