Я пытаюсь реализовать сетку (например. DataGridView .NET) для моего приложения iOS. Я использую UITableView с пользовательским подклассом UITableViewCell, в котором у меня есть несколько меток, представляющих каждый столбец данных для этой строки. Мой вопрос касается изменения ширины этих меток после изменения ориентации устройства. Я в основном хочу пропорционально изменить их размер, чтобы, например, столбец, занимающий 1/3 ширины сетки в портретной ориентации, по-прежнему занимал 1/3 ширины при переключении в альбомную ориентацию.
Прямо сейчас я достигаю этого, переопределяя метод - (void)layoutSubviews
моего подкласса UITableViewCell; Я просто жестко кодирую соотношение iPad и iPhone в альбомной ориентации. Однако это работает только в том случае, если размер самой сетки пропорционально изменяется при изменении ориентации, что, конечно, не всегда так.
Чтобы найти решение, которое будет работать в любом случае, я думал об использовании self.bounds.size.width
в методе layoutSubviews, но кажется, что автоматическое изменение размера масок - лучшее решение. Если я установлю маску каждой UILabel на UIViewAutoResizingFlexibleWidth | UIViewAutoResizingFlexibleLeftMargin | UIViewAutoResizingFlexibleRightMargin
, тогда я достигну того типа масштабирования, который ищу. Однако я не могу понять, как установить начальные кадры каждой метки. Если я не знаю начальных границ ячейки, пока не будет вызван layoutSubviews, как я могу организовать свои подпредставления для начала?