私もこの問題を抱えていたので、ここを見てください:
1) マクロを作成する必要があります
#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending)
2) viewWillAppear でバージョンを確認する必要があるよりも
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if (![self.p_tableView respondsToSelector:@selector(tableView:heightForRowAtIndexPath:)])
{
self.p_tableView.rowHeight = UITableViewAutomaticDimension;
self.p_tableView.estimatedRowHeight = 100.0f;
}
}
3) RespondsToSelector メソッドをオーバーライドする必要があります。この方法では、行ごとに heightForRow を呼び出す必要がないため、リソースの消費が少なくて済みます。
- (BOOL)respondsToSelector:(SEL)selector
{
static BOOL useSelector;
static dispatch_once_t predicate = 0;
dispatch_once(&predicate, ^{
useSelector = SYSTEM_VERSION_LESS_THAN(@"8.0");
});
if (selector == @selector(tableView:heightForRowAtIndexPath:))
{
return useSelector;
}
return [super respondsToSelector:selector];
}
それが役に立てば幸い
経由