Как сделать 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 "