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];
}
4. autoresizesSubviews
如果视图的autoresizesSubviews属性被设置为 NO
,则该视图的直接子视图的所有自动尺寸调整行为将被忽略。类似地,如果一个子视图的自动尺寸调整掩码被设置为 UIViewAutoresizingNone,则该子视图的尺寸将不会被调整,因而其直接子视图的尺寸也不会被调整。
- 请注意:为了使自动尺寸调整的行为正确,视图的transform属性必须设置为恒等变换;其它变换下的尺寸自动调整行为是未定义的。
自动尺寸调整行为可以适合一些布局的要求,但是如果您希望更多地控制视图的布局,可以在适当的视图类中重载layoutSubviews方法。
5.判断设备是否是横屏
#define IS_LANDSCAPE ([[UIApplication sharedApplication] statusBarOrientation] == UIDeviceOrientationLandscapeLeft || [[UIApplication sharedApplication] statusBarOrientation] == UIDeviceOrientationLandscapeRight)
网友评论