У нас есть приложение для iphone, и сейчас мы его разрабатываем как универсальное. Мы хотим использовать те же представления, включая представления таблиц. С левой стороны мы используем табличное представление для навигации, которое можно расширять динамически, а с правой стороны у нас есть наши viewControllers, которые в основном такие же, как для iPhone.

Из-за дизайна и UX мы не хотим растягивать их, чтобы заполнить весь вид справа, мы хотим, чтобы они были центрированы с отступом слева и справа. Это заполнение должно быть динамическим, потому что, если меню слева расширяется, заполнение должно быть уменьшено.

Мы пытались добиться путем перезаписи метода ячеек setframe, но это немного неудобно, пробовали кто-нибудь из вас раньше что-то в этом роде?

ТИА

0
Chris K. 8 Янв 2013 в 17:36
Сделать приложение доступным на iPad, но добавление отступов вместо использования лишнего места в большинстве случаев является плохим дизайном. Кроме того, вы используете автоматический макет или нет? (поскольку это повлияет на мой ответ)
 – 
DBD
8 Янв 2013 в 17:53
В этом случае мы зависим от клиента: / .. нет, мы не можем, потому что мы должны поддерживать iOS 5.1.
 – 
Chris K.
8 Янв 2013 в 17:54

1 ответ

Лучший ответ

Внутри верхнего уровня UIView моего UIViewController я бы создал представление заполнения. Сделайте так, чтобы он прошел на всю ширину superview, при необходимости увеличьте / уменьшите его и прикрепите к левой и правой сторонам.

Внутри представления заполнения создайте представление содержимого. Сделайте вид настолько широким, насколько хотите, не меняйте его размер по горизонтали и не прикрепляйте его к левой или правой сторонам. Прикрепите его в центре поля зрения.

Теперь, если вы скажете ... сдвиньте представление заполнения вправо и уменьшите его, изменив origin.x и size.width в кадре, внутреннее представление содержимого останется фиксированным по размеру и центрированным в представлении заполнения. Это также позволит вам перемещать меню в левой или правой части экрана.

Изменить на основе комментария: Если ваше внутреннее представление содержимого представляет собой таблицу, но вам нужна полоса прокрутки справа.

Измените frame.size.height внутреннего представления содержимого (UITableView, чтобы оно соответствовало значению contentSize.height табличного представления. Это сделает таблицу такого же размера, как и содержимое. Отключите вертикальную прокрутку. (Примечание: вы вам придется обновлять высоту представления таблицы каждый раз, когда вы изменяете высоту содержимого.)

Вместо того, чтобы использовать для заполнения простой UIView, сделайте его UIScrollView.

Теперь ваше представление таблицы имеет статическую высоту и не прокручивается, нет полосы прокрутки. Представление заполнения теперь управляет прокруткой, что означает, что вы можете прокручивать, касаясь заполнения, а также располагая полосой прокрутки на правом краю представления заполнения.

0
DBD 8 Янв 2013 в 18:30
Хороший подход, но в этом случае полоса прокрутки будет закреплена рядом с tableView, если она находится по центру, а меню слева не расширяется. Нашей целью было бы, чтобы полоса прокрутки всегда оставалась с правой стороны на одном и том же месте.
 – 
Chris K.
8 Янв 2013 в 18:19
Спасибо, мы попробуем :).
 – 
Chris K.
9 Янв 2013 в 01:30