Как вы сокращаете UIPickerView на iPhone?
Я хотел бы уменьшить высоту UIPickerView
в моем приложении iPhone, чтобы он показывал только одну строку и один столбец. Высота представления сборщика должна быть равна высоте строки.
Я использую Interface Builder для построения UIPickerView
, но я не могу найти простой способ изменить размер этого элемента управления.
Как вы сокращаете UIPickerView
?
Ответы
Ответ 1
Собственно, вы можете слегка сжать весь UIPickerView, применив аффинное преобразование к закрывающему виду. Например:
CGSize pickerSize = [pickerView sizeThatFits:CGSizeZero];
pickerTransformView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, pickerSize.width, pickerSize.height)];
pickerTransformView.transform = CGAffineTransformMakeScale(0.75f, 0.75f);
[pickerTransformView addSubview:pickerView];
[self.view addSubview:pickerTransformView];
[pickerTransformView release];
будет масштабировать сборщик до 75% от его первоначального размера, помещая его в пределах содержащего представления и применяя преобразование масштабирования к этому представлению. Применение преобразования непосредственно к UIPickerView приводит к нежелательным рисункам артефактов.
Тем не менее, вид изменения размера, который вы ищете, лучше всего использовать, создав настраиваемый элемент управления.
Ответ 2
Это возможно и легко!
Просто откройте файл nib как обычный текст, затем найдите представление выбора и настройте меры:
<object class="IBUIPickerView" id="783900772">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{85, 68}, {150, 116}}</string>
Что все!
Ответ 3
Насколько я знаю, это будет испорчено, если вы сократите его.
a) UITableView + UIPickerView
Я рекомендую вам использовать "строку в UITableView + UIPickerView" для этого. Вы можете использовать строку в tableView, как dropDownList в Windows, когда вы нажимаете на эту строку, будет отображаться pickerView (сначала скрытый).
б)
Если у вас есть длинный список данных в tableView, и только один из элементов должен выбрать данные, вы должны прокрутить представление, используя следующий метод (не забудьте вычислить исходное положение pickerView, поскольку оно будет перемещено вверх/вниз вместе)
-(void)setViewMove:(BOOL)moveUP offset:(CGFloat)offset
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.3];
CGRect rect = self.view.frame;
if(moveUP)
{
rect.origin.y-=offset;
rect.size.height+=offset;
}
else //move down
{
rect.origin.y+=offset;
rect.size.height-=offset;
}
self.view.frame = rect;
[UIView commitAnimations];
}
с)
Вы также можете добавить другое представление для сборщика и вернуться к этому представлению, когда вы что-то выбрали.
Мой вывод:
Если в таблицеView есть только несколько строк, используйте.
Если у вас много строк в tableView, но только один из них нуждается в сборщике, используйте b.
Если у вас много строк в tableView, и многие из них нуждаются в сборщике, используйте c.
Ответ 4
Создайте простой UIView в Interface Builder. Установите желаемую позицию и размер, добавьте ограничения. Установите флажок "Захватить подвид". Затем перетащите и выберите Picker View внутри этого представления в качестве подзаголовка. Добавьте ограничения для выбора для выравнивания по горизонтали и вертикали внутри контейнера. Должен выполнять эту работу.
Ответ 5
Ответ пользователя2248258 действительно работает, если вы используете раскадровки и/или автозапуск. Там я хотел бы добавить скриншоты, как предложил Ниламбар.
-
поместите pickerview в другой вид контейнера с размером, который вы хотите ![Поместить pickerview в другой вид контейнера]()
-
check clipSubviews для представления контейнера ![]()
-
выровняйте сборщик, центрированный по горизонтали и вертикали в этом представлении контейнера, также дайте ему нулевые ограничения для конечного и ведущего места ![]()
Таким образом, представление сборщика обрезается до нужного размера (не будет изменяться).
Результат:
![введите описание изображения здесь]()