小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

UITableViewCell詳解

 wintelsui 2013-09-22

UITableViewCell:

1.使用系統(tǒng)自定義的各種UITableViewCell的樣式

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    static NSString* indentifier = @"cell";
    MyTableCell* cell = [tableView dequeueReusableCellWithIdentifier:indentifier];
    if (!cell) {
        /*
         
         typedef NS_ENUM(NSInteger, UITableViewCellStyle) {
         UITableViewCellStyleDefault,    // Simple cell with text label and optional image view (behavior of UITableViewCell in iPhoneOS 2.x)
         UITableViewCellStyleValue1,        // Left aligned label on left and right aligned label on right with blue text (Used in Settings)
         UITableViewCellStyleValue2,        // Right aligned label on left with blue text and left aligned label on right (Used in Phone/Contacts)
         UITableViewCellStyleSubtitle    // Left aligned label on top and left aligned label on bottom with gray text (Used in iPod).
         };
         */

        cell = [[[MyTableCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:indentifier]autorelease];
    }
    cell.textLabel.text = [_data objectAtIndex:indexPath.row];
    cell.detailTextLabel.text = @"detail";
    cell.imageView.image = [UIImage imageNamed:@"checkmark.png"];
    return cell;
}

使用UITableViewCellStyleDefault的效果:


使用UITableViewCellStyleValue1的效果:



使用UITableViewCellStyleValue2的效果:


在UITableViewCell內(nèi)默認(rèn)是有contentview和accessoryView這兩個(gè)subview的,contentview中的subview根據(jù)不同的cell的style會(huì)使用不同的布局。contentview和其中的默認(rèn)subview會(huì)根據(jù)cell的編輯狀態(tài)出現(xiàn)的控件自動(dòng)縮進(jìn),自定義cell時(shí)可以把自定義控件添加在contentview中,也可以直接添加到cell中。


2.設(shè)置UITableViewCell的屬性

      //cell的右邊輔助按鈕的樣式
    cell.accessoryType = UITableViewCellAccessoryCheckmark;
    //自定義cell右邊的輔助按鈕
    cell.accessoryView = nil;
    //自定義cell的背景
    cell.backgroundView = nil;
    //設(shè)置cell的contentview中的detail的文字內(nèi)容
    cell.detailTextLabel.text = @"";
    //查看cell當(dāng)前的編輯模式
    int style = cell.editingStyle;
    //設(shè)置當(dāng)cell進(jìn)入編輯模式時(shí)的輔助按鈕樣式
    cell.editingAccessoryType = UITableViewCellAccessoryDisclosureIndicator;
    //自定義cell進(jìn)入編輯模式后輔助按鈕
    cell.editingAccessoryView = nil;
    //獲取cell的縮進(jìn)級(jí)別
    int level = cell.indentationLevel;
    //獲取cell的縮進(jìn)寬度
    float width = cell.indentationWidth;
    //設(shè)置cell被選中時(shí)的背景
    cell.selectedBackgroundView = nil;
    //設(shè)置cell的選中狀態(tài)樣式
    cell.selectionStyle = UITableViewCellSelectionStyleBlue;
    //設(shè)置cell的contentview中的textlabel文字內(nèi)容
    cell.textLabel.text = @"";


3.自定義的UITableViewCell重寫父類的方法

//初始化uitableviewcell后,自定義cell添加subview
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

//當(dāng)cell被選中時(shí),uitableview內(nèi)部會(huì)自動(dòng)調(diào)用該方法,重寫該方法可以在cell被選中時(shí)做一些額外的操作
- (void)setSelected:(BOOL)selected animated:(BOOL)animated

//當(dāng)cell處于高亮狀態(tài)時(shí),uitableview內(nèi)部會(huì)自動(dòng)調(diào)用該方法,重寫該方法可以在cell處于高亮?xí)r做一些額外操作
-(void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated

//重寫layoutsubviews方法,為了查看當(dāng)cell改變編輯狀態(tài)時(shí),有什么subview
-(void)layoutSubviews{

    [super layoutSubviews];
    NSArray* subs = self.subviews;
    for (UIView* sub in subs) {
        NSLog(@"view:%@",sub);
    }
}

當(dāng)進(jìn)入刪除編輯模式時(shí),cell的subview有一個(gè)叫UITableViewCellDeleteConfirmationControl的subview,這代表刪除按鈕??梢孕薷脑搗iew達(dá)到修改刪除按鈕的位置,大小等屬性。

當(dāng)進(jìn)入移動(dòng)編輯模式時(shí),cell的subview有一個(gè)叫UITableViewCellReorderControl的subview,這個(gè)代表移動(dòng)按鈕??梢孕薷脑搗iew達(dá)到修改移動(dòng)按鈕的位置,大小等屬性。

當(dāng)進(jìn)入插入編輯模式時(shí),cell的subview有一個(gè)叫UITableViewCellEditControl的subview,這個(gè)代表添加按鈕。可以修改該view達(dá)到修改添加按鈕的位置,大小等屬性。


//當(dāng)cell的狀態(tài)變?yōu)榫庉嫊r(shí),uitableview內(nèi)部會(huì)自動(dòng)調(diào)用該方法,重寫該方法可以改變cell的布局
-(void)willTransitionToState:(UITableViewCellStateMask)state{
    [super willTransitionToState:state];
}
//當(dāng)cell的狀態(tài)變?yōu)榫庉嫊r(shí),uitableview內(nèi)部會(huì)自動(dòng)調(diào)用該方法,重寫該方法可以改變cell的布局
-(void)didTransitionToState:(UITableViewCellStateMask)state{
    [super didTransitionToState:state];
    /*
     typedef NS_OPTIONS(NSUInteger, UITableViewCellStateMask) {
     UITableViewCellStateDefaultMask                     = 0,
     UITableViewCellStateShowingEditControlMask          = 1 << 0,
     UITableViewCellStateShowingDeleteConfirmationMask   = 1 << 1
     };
     */

    //滑動(dòng)出現(xiàn)的刪除按鈕state是2的,編輯狀態(tài)下的刪除按鈕state是3的
    if (state == UITableViewCellStateShowingDeleteConfirmationMask||state==3) {
        for (UIView *subview in self.subviews) {
            //cell的subview為UITableViewCellDeleteConfirmationControl時(shí),代表是刪除按鈕
            if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationControl"]) {
                
                UIView *deleteButtonView = subview;
                CGRect f = deleteButtonView.frame;
                f.origin.x -= 50;
                deleteButtonView.frame = f;            }
        }
    }
    //插入和移動(dòng)的編輯狀態(tài)state都是1
    else if(state==UITableViewCellStateShowingEditControlMask){
        for (UIView *subview in self.subviews) {
            NSString* type = @"";
            //判斷如果cell當(dāng)前是插入模式,則尋找UITableViewCellEditControl的subview,代表添加按鈕
            if (self.editingStyle==UITableViewCellEditingStyleInsert) {
                type = @"UITableViewCellEditControl";
            }
            //否則尋找UITableViewCellReorderControl的subview,代表移動(dòng)按鈕
            else type = @"UITableViewCellReorderControl";
            if ([NSStringFromClass([subview class]) isEqualToString:type]) {
                
                UIView *deleteButtonView = [subview.subviews objectAtIndex:0];
                CGRect f = deleteButtonView.frame;
                f.origin.x -= 50;
                deleteButtonView.frame = f;
            }
        }

    }
}


4.UITableViewCell自定義背景顏色

方法1:

通過修改contentview的backgroundcolor


方法2:

創(chuàng)建一個(gè)uiview,設(shè)置它的backgroundcolor后再添加到cell里


方法3:

通過在- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath的回調(diào)中設(shè)置cell的backgroundcolor

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多