Objective-C Автоматическая настройка подпредставлений - PullRequest
0 голосов
/ 10 сентября 2010

Я хочу написать метод для приложения для iPhone, который будет автоматически корректировать значения Y подпредставлений UIViews в зависимости от доступного пространства в этом представлении.Я постараюсь объяснить, не слишком запутываясь.

У меня есть представление «Контейнер», которое содержит до 3 подпредставлений.В каждом подпредставлении есть кнопка, которая удаляет подпредставление из представления контейнера, когда подпредставление удалено, я хотел бы настроить оставшиеся подпредставления так, чтобы они занимали все пространство, открытое удаленным подпредставлением.

Заранее спасибо за любую помощь!

Ответы [ 2 ]

1 голос
/ 11 сентября 2010

Один из способов - заставить вашу оболочку просматривать пользовательский подкласс UIView. В этом подклассе ведите отдельный NSMutableArray ваших подпредставлений, в котором индекс массива каждого подпредставления соответствует его позиции на экране.

С этим у вас есть несколько вариантов. Один из них - переопределить didAddSubview :. На основе кадра добавляемого подпредставления вы можете определить позицию подпредставления и вставить ссылку на подпредставление по соответствующему индексу в вашем массиве.

Более чистый вариант - реализовать свой собственный метод, подобный этому:

- (void)insertSubview:(UIView *)subview atPosition:(NSInteger)position;

, где position - это индекс, определяющий, какой «слот» должен заполнять подпредставление. Вы можете установить рамку для подпредставления явно в этом методе вместе с любыми другими подпредставлениями, на которые влияет вставка. Затем вставьте подпредставление в ваш массив с соответствующим индексом.

Наконец, переопределите willRemoveSubview :. В нем вы можете использовать indexOfObject: в вашем массиве, чтобы найти позицию удаляемого подпредставления. Затем просто настройте кадры всех подпредставлений, которые следуют за ним, и удалите подпредставление из вашего массива.

(Еще одна альтернатива - пропустить массив и просто использовать свойство tag, чтобы указать позицию каждого подпредставления. Мне не нравится этот параметр. Использование свойства tag для чего-либо всегда кажется ужасным взломать меня.)

1 голос
/ 10 сентября 2010

Ну, первое, что вам нужно сделать, это сообщить вашему контейнеру, что подпредставление было удалено.

Затем вы можете взять значение высоты удаленного вида, разделить его на количество оставшихся подпредставлений и затем увеличить высоту этих оставшихся подпредставлений.

Затем вы устанавливаете свое первое оставшееся подпредставление на координату Y 0, а второе (если оно есть) на координату Y первого значения высоты первого подпредставления

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...