2012-01-30 2 views
0

У меня есть сгруппированный TableView, и я разместил UISwitch в правой части строки, только слева от «>». На данный момент я использовал явный CGRect (без вычисленных значений).Позиционирование UISwitch в UITableView для iPhone, iPad и Retina

В iPhone 4.2 он установлен правильно, но, конечно же, на iPad 4.2 это не так.

Существуют ли определенные способы расчета позиционирования, которые будут давать одинаковое относительное размещение независимо от разрешения экрана устройства/экрана? Или я просто использую ширину экрана, ширину ячейки таблицы и т. Д., И вычисляю ее сам?

+0

u может использовать для каждого из ваших компонентов формулу: ipadVersion.width = iphoneVersion.width * 768/480. Это простой пример для определения ширины только в портретном режиме. Конечно, используя ту же модель, вы можете узнать x, y и высоту. Дело в том, что результатом является растянутая версия версии iPhone. Я не думаю, что есть другой вариант –

ответ

0

Для индивидуальных видов (как в UITableViewCell подкласса), вы можете использовать layoutSubviews сделать пользовательский позиционирование вида:

- (void) layoutSubviews { 
    [super layoutSubviews]; 

    // layout relative to contentView frame 
    switchView.frame = CGRectMake(
     CGRectGetWidth(self.contentView.frame) - CGRectGetWidth(switchView.frame) - someMargin, 
     4.0f/y, // or something else related to the contentView 
     CGRectGetWidth(switchView.frame), 
     CGRectGetHeight(switchView.frame) 
    ); 
} 

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

Смежные вопросы