Как установить позицию в UILabel, если находится внутри моего detailView (splitView), но у меня есть проблемы в viewDidLoad и willRotateToInterfaceOrientation
Я пытаюсь улучшить приложение для iOS (Objective-C). Для iPhone/iPod все отлично работает, но проблема для iPad.
В iPad я использовал SplitView для вызова indexTable.h
как мастер и PlayGround.h
как деталь. Внутри PlayGround я вызывал некоторые классы (например, insideView), но когда я запускаю приложение в альбомной ориентации (в iPad), у меня есть UILabels в viewDidLoad (только для iPad, для других устройств это другое) с этой позицией:
self.labelAirName.frame = CGRectMake((self.insideView.bounds.size.width/2), 110, self.insideView.bounds.size.width/2, 30);
self.labelMaterialName.frame = CGRectMake((self.insideView.bounds.size.width/2), 80, self.insideView.bounds.size.width/2, 30);
self.airLabel.frame = CGRectMake((self.insideView.bounds.size.width/2)-95, 110, 90, 30);
self.materialLabel.frame = CGRectMake((self.insideView.bounds.size.width/2)-95, 80, 90, 30);
Я использую InsideView, потому что мне нужен этот размер в качестве ссылки, и у меня есть
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
duration:(NSTimeInterval)duration {
//for iPad landscape i call the last mentioned values, because for portrait all the labels change their positions
}
когда я звоню willRotateToInterfaceOrientation
, это работает хорошо, но когда я начинаю, размеры разные.
Это проблема с моим splitView? Как я могу получить размер DetailView?
1 ответ
Apple рекомендует использовать Size class
добиться другого позиционирования в Regular
а также Compact
Режим. ОС убивает приложение Если ручное вычисление занимает много памяти, так как вычисление выполняется 60 раз в секунду.
Используйте автопоставку для лучшей производительности / Полноэкранный режим - лучший вариант.
если вы все еще хотите сделать свои собственные вычисления, вы можете сделать это в
- (void)layoutSubviews
метод