Как сделать uitableview в интерфейсе, совместимом с 4-дюймовым iPhone
Как сделать uitableview в интерфейсе, совместимом с 4-дюймовым iphone5, и более старым iPhone 4/4s?
В Xcode 4.5 есть три варианта:
- Freeform
- Retina 3.5 полный экран
- Retina 4 полный экран
Если я выбрал Retina 4, то в 3,5-дюймовом телефоне он пересекает/переполняет границу экрана
Используя код, я могу установить соответствующий кадр, но зачем использовать конструктор интерфейса?
Как это сделать с помощью Interface Builder?
ИЗМЕНИТЬ
Мой вопрос для iphone 5 retina 4-дюймовый экран.
При проверке размера представления, которое имеет строку состояния и навигационную панель, вот значение self.view.frame.size.height/width, frame 320.000000 x 416.000000 в случае, если я выберу произвольную форму /none/retina 3.5
Параметры авторазрешения устанавливаются так, что вид расширяется во всех направлениях, это все стойки и пружины включены.
ИЗМЕНИТЬ
Для тестирования в iOS6-симуляторе, если я установил следующее в коде
self.tableView.frame = CGRectMake(0, 0, 320, 546);
self.tableView.bounds = CGRectMake(0, 0, 320, 546);
self.view.frame = CGRectMake(0, 0, 320, 546);
self.view.bounds = CGRectMake(0, 0, 320, 546);
NSLog(@"%2f - %2f", self.view.bounds.size.width, self.view.bounds.size.height);
NSLog(@"%2f - %2f", self.tableView.bounds.size.width, self.tableView.bounds.size.height);
Я получаю следующий вывод
320.000000 - 546.000000
320.000000 - 546.000000
И все строки ниже 480 пикселей сверху не могут быть выбраны, так как "вид" все еще считает, что они находятся за пределами границ.
МОЕ РЕШЕНИЕ
Установите размер Retina 4 для всех экранов, даже в файл xib главного окна. Кажется, он работает нормально даже на iphone 4 после этого. И все строки ниже 480 пикселей теперь можно использовать в iOS 6-симуляторе
Ответы
Ответ 1
BEWARE, чтобы установить атрибут размера в "Retina 4 Full Screen", если вы представляете таблицы действий в своем приложении. Это решение фактически устанавливает размеры основного окна в размеры iPhone 5. В моем случае, установка этого затронутого отображения в iPhone 4 при попытке показать лист действий, потому что он попытается показать его снизу экрана с возможностью просмотра,
Правильное решение, которое работает для всех случаев, заключается в том, чтобы установить размер равным нулю и определить размер экрана в методе делегирования загрузки делегата приложения и установить главное окно этого размера или установить представление rootviewcontroller на этот размер. Действия будут корректно работать.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window.frame = CGRectMake(0, 0, [[UIScreen mainScreen]bounds].size.width, [[UIScreen mainScreen]bounds].size.height);
}
Ответ 2
Выберите свой xib файл и измените атрибут Size
.
![enter image description here]()
Ответ 3
Из того, что я понял, вы хотите создать представление таблицы, которое может быть применимо как к iPhone 4, так и к 5. Сначала сначала я havnt пробовал Xcode 4.5, но код
CGRect fullScreenRect = [[UIScreen mainScreen] bounds];
theTableView.frame = CGRectmake = (0,0,fullScreenRect.width,fullScreenRect.height);
the fullScreenRect
вернет границу текущего устройства, будь то 3,5 или 5 дюймов. и u может динамически устанавливать высоту и ширину.
Сообщите мне, если это сработало.
Приветствия
Ш
Ответ 4
Настройки, такие как выбор из "свободной формы", "Retina 3.5" или "Retina 4" в Interface Builder, находятся в разделе " Имитированные показатели" правой панели (обратите внимание, что добавлено выделение).
Это означает, что они используются только для того, чтобы показать вам, как будет выглядеть представление при отображении в этих измерениях. Как правило, вы используете это, чтобы знать во время разработки, какое пространство вам нужно будет расставить ваши взгляды. Но UIView UIViewController всегда изменяется при отображении на экране в конце.
Например, если вы знаете, что у вас будет строка состояния и NavigationBar вверху, а TabBar внизу, у вас будет меньше места для организации вашего оставшегося вида на экране, поэтому выберите их в "Simulated Метрики" панели поможет вам увидеть, какое пространство у вас есть в представлении, и не размещать элементы в точке y = 460, которые будут выходить из экрана во время выполнения из-за этих NavBar и TabBar.
Но в конце UIViewController изменит размер своего представления так, чтобы он занимал максимально возможное пространство, перемещая подзоны в соответствии с свойствами AutoresizingMask (строками и пружинами, которые вы можете настроить в панели "Размер инспектор" в IB).
В заключение, единственное, что вам нужно сделать, это:
- Предпочитайте выбрать синтаксическую метрику "Retina 3.5" для вашего вида, чтобы увидеть в Interface Builder наименьший размер, который может появиться при отображении этого представления (помогая вам избегать размещения представлений и элементов управления на части вашего экрана, которая будет только видимые на 4 "экранах, но не на 3,5" экранах и выбирая ваш взгляд, имея в виду самую маленькую общую зону).
- Правильно настройте свои авторезистирующие маски (или используйте AutoLayout и ограничения, если вы планируете выпустить приложение только для iOS6, а не iOS4 или iOS5), чтобы ваши представления меня правильно изменили, когда экран будет выше (Retina 4 ").
Ответ 5
если ваш интерфейс использует раскадровку:
Откройте *.Storyboard с "Текстовым редактором"
и зайдите в нижнюю часть
найти
<simulatedScreenMetrics key="destination" type="retina4"/>
удалить
type="retina4"
то размер по умолчанию будет равен 3,5 "