zoukankan      html  css  js  c++  java
  • UItableViewCell滑动删除时,调整cell子视图的位置大小

    UItableViewCell滑动删除时,调整cell的位置大小是否显示等。
    CustomTableViewCell为UITableViewCell的子类,在实现文件中重写willTransitionToState方法。
    willTransitionToState是在cell改变显示状态的时候调用,有三种状态:
    typedef NS_OPTIONS(NSUInteger, UITableViewCellStateMask) {
    UITableViewCellStateDefaultMask = 0, //普通状态
    UITableViewCellStateShowingEditControlMask = 1 << 0, //编辑状态
    UITableViewCellStateShowingDeleteConfirmationMask = 1 << 1 //删除状态
    };
    具体实现方法:

    - (void) willTransitionToState:(UITableViewCellStateMask)state{
        [super willTransitionToState:state];
        //UITableViewCellStateShowingDeleteConfirmationMask
        if ((state & UITableViewCellStateShowingDeleteConfirmationMask) == UITableViewCellStateShowingDeleteConfirmationMask) {
            for (UIView *subview in self.subviews) {
                if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationControl"]) {
                    //this is delete button
                }
                
                if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellContentView"]) {
                    //this is contentView
                    for (UIView *sub in subview.subviews) {
                        if ([NSStringFromClass([sub class]) isEqualToString:@"UILabel"]) {
                            UILabel *subLabel = (UILabel *)sub;
                            if (subLabel.tag == 8) {
                                subLabel.hidden = YES;
                            }
                        }
                        if ([NSStringFromClass([sub class]) isEqualToString:@"UIImageView"]) {
                            UILabel *subImageView = (UILabel *)sub;
                            if (subImageView.tag == 11) {
                                subImageView.hidden = YES;
                            }
                        }
                    }
                }
            }
        }
        //UITableViewCellStateDefaultMask
        if ((state & UITableViewCellStateShowingDeleteConfirmationMask) == UITableViewCellStateDefaultMask){
            for (UIView *subview in self.subviews) {
                if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellDeleteConfirmationControl"]) {
                    //this is delete button
                }
                
                if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellContentView"]) {
                    //this is contentView
                    for (UIView *sub in subview.subviews) {
                        if ([NSStringFromClass([sub class]) isEqualToString:@"UILabel"]) {
                            UILabel *subLabel = (UILabel *)sub;
                            if (subLabel.tag == 8) {
                                subLabel.hidden = NO;
                            }
                        }
                        if ([NSStringFromClass([sub class]) isEqualToString:@"UIImageView"]) {
                            UILabel *subImageView = (UILabel *)sub;
                            if (subImageView.tag == 11) {
                                subImageView.hidden = NO;
                            }
                        }
                    }
                }
            }
        }
    }
    

      

  • 相关阅读:
    命名mangling(压榨)
    Redis的源代码分析
    开源数据库 Sharding 技术 (Share Nothing)
    Python中time模块详解
    关于海量数据的数据模型
    字符数组,字符指针,Sizeof总结
    ConfigParser模块的使用
    分享懒人张RDLC报表(七、八)
    VS中提示:未能启用约束。一行或多行中包含违反非空、唯一或外键约束的值。
    VS用正则表达式统计代码行数
  • 原文地址:https://www.cnblogs.com/nanoCramer/p/3140255.html
Copyright © 2011-2022 走看看