С появлением iOS 7 высота смещения теперь должна включать высоту верхней области состояния. В противном случае устройства iOS7 будут иметь 20 пикселей веб-просмотра, все еще скрытые под панелью навигации.
В проекте, который должен поддерживать iOS 7 и более старые устройства, макрос, подобный найденному
здесь:
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
Может быть очень полезным.
Перечисленная выше модифицированная версия полезного кода zerotool теперь может выглядеть примерно так:
if (self.navigationController != nil && self.navigationController.navigationBar.translucent) {
top = self.navigationController.navigationBar.bounds.size.height;
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
top += [[UIScreen mainScreen] applicationFrame].origin.y;
}
}
// (etc.)