iOS 6 loadNibNamed загружает перо iphone5 в 3,5-дюймовые телефоны
У меня есть подкласс UIView ( PopupView) и два xbis для него: PopupView.xib и PopupView~iphone5.xib .
Когда я вызываю XIB:
if ( screenHeight >= 568 ) {
subviewArray = [[NSBundle mainBundle] loadNibNamed:@"PopupView~iphone5" owner:self options:nil];
} else {
subviewArray = [[NSBundle mainBundle] loadNibNamed:@"PopupView" owner:self options:nil];
}
В iOS 7 при тестировании с 3,5-дюймовым телефоном он загружает правильный PopupView.xib, а с 4-дюймовым телефоном - PopupView~iphone5.xib . Но при тестировании с iOS 6 и 3,5-дюймовым телефоном, хотя код переходит из оператора "else" и теоретически он загружает PopupView.xib, он на самом деле возвращает iphone 5 xib (отображаемое изображение - это то, которое разработано для iphone5) и высота загруженного вида 548, а не 480.
Какие-либо предложения?
2 ответа
Исправлена. Все, что мне было нужно, это очистить полную сборку, а также удалить приложение из симулятора и перестроить. Надеюсь, что этот случай поможет кому-то другому, кто сталкивается с подобной проблемой и не помнит, чтобы очистить свой проект.
Попробуйте использовать следующий код.
-(id) init{
UIScreen* mainscr = [UIScreen mainScreen];
CGSize screenSize = mainscr.currentMode.size;
CGFloat screenHeight = screenSize.height;
if (screenHeight == 1136) {
self = [super initWithNibName:@"PopupView~iphone5" bundle:[NSBundle mainBundle]];
}
else
{
self = [super initWithNibName:@"PopupView" bundle:[NSBundle mainBundle]];
}
}
Это работает для меня.