判断某个方法是否覆写, 计算contentView宽度等 iOS开发

1.判断一个对象是否继承某个类

用cell的子类来做范例

BOOL inherited = ![templateLayoutCell isMemberOfClass:UITableViewCell.class];

2.判断某个方法是否覆写

用cell的子类来做范例

SEL selector = @selector(sizeThatFits:);

BOOL overrided = [templateLayoutCell.class instanceMethodForSelector:selector] != [UITableViewCell instanceMethodForSelector:selector];

3.计算一个cell的ContentView的宽度

此处的self是指某个具体的cell

    CGFloat contentViewWidth = CGRectGetWidth(self.frame);

    // If a cell has accessory view or system accessory type, its content view's width is smaller
    // than cell's by some fixed values.
    if (templateLayoutCell.accessoryView) {
        contentViewWidth -= 16 + CGRectGetWidth(templateLayoutCell.accessoryView.frame);
    } else {
        static const CGFloat systemAccessoryWidths[] = {
            [UITableViewCellAccessoryNone] = 0,
            [UITableViewCellAccessoryDisclosureIndicator] = 34,
            [UITableViewCellAccessoryDetailDisclosureButton] = 68,
            [UITableViewCellAccessoryCheckmark] = 40,
            [UITableViewCellAccessoryDetailButton] = 48
        };
        
        contentViewWidth -= systemAccessoryWidths[templateLayoutCell.accessoryType];
    }

更多信息查看FDTemplateLayoutCell

4. autoresizesSubviews

如果视图的autoresizesSubviews属性被设置为 NO,则该视图的直接子视图的所有自动尺寸调整行为将被忽略。类似地,如果一个子视图的自动尺寸调整掩码被设置为 UIViewAutoresizingNone,则该子视图的尺寸将不会被调整,因而其直接子视图的尺寸也不会被调整。

  • 请注意:为了使自动尺寸调整的行为正确,视图的transform属性必须设置为恒等变换;其它变换下的尺寸自动调整行为是未定义的。

自动尺寸调整行为可以适合一些布局的要求,但是如果您希望更多地控制视图的布局,可以在适当的视图类中重载layoutSubviews方法。

5.判断设备是否是横屏

#define IS_LANDSCAPE         ([[UIApplication sharedApplication] statusBarOrientation] == UIDeviceOrientationLandscapeLeft || [[UIApplication sharedApplication] statusBarOrientation] == UIDeviceOrientationLandscapeRight)

你可能感兴趣的:(判断某个方法是否覆写, 计算contentView宽度等 iOS开发)