Можно ли изменить высоту UIPickerView? Некоторые приложения, кажется, имеют более короткие PickerViews, но установка меньшего фрейма не работает, и фрейм заблокирован в Interface Builder.
ios
iphone
cocoa-touch
uikit
uipickerview
Стивен Кэнфилд
источник
источник
Ответы:
Кажется очевидным, что Apple особо не предлагает убирать с высотой по умолчанию
UIPickerView
, но я обнаружил, что вы можете добиться изменения высоты представления, взяв полный контроль и передав желаемый размер кадра во время создания, например:smallerPicker = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 120.0)];
Вы обнаружите, что на разной высоте и ширине наблюдаются визуальные глюки. Очевидно, эти глюки нужно было либо как-то устранить, либо выбрать другой размер, который их не проявляет.
источник
Ни один из вышеперечисленных подходов не работает в iOS 4.0.
Высота pickerView больше не может быть изменена. Есть сообщение, которое сбрасывается на консоль, если вы пытаетесь изменить фрейм средства выбора в 4.0:
В итоге я сделал кое-что довольно радикальное, чтобы получить эффект меньшего по размеру средства выбора, работающего как в OS 3.xx, так и в OS 4.0. Я оставил средство выбора любого размера, который SDK решил, что он должен быть, и вместо этого сделал сквозное прозрачное окно на моем фоновом изображении, через которое средство выбора становится видимым. Затем просто поместил средство выбора позади (в порядке Z) моего фона UIImageView, чтобы была видна только часть средства выбора, что определяется прозрачным окном на моем фоне.
источник
Есть только три допустимые высоты для
UIPickerView (162.0, 180.0 and 216.0)
.Вы можете использовать
CGAffineTransformMakeTranslation
иCGAffineTransformMakeScale
функцию должным образом соответствовать подборщику для вашего удобства.Пример:
Приведенный выше код изменяет высоту окна выбора на половину и переставляет его в точное положение (Left-x1, Top-y1) .
источник
Пытаться:
источник
В iOS 4.2 и 4.3 работает следующее:
Следующее не работает:
У меня есть приложение, которое находится в магазине приложений с трехстрочным выбором даты. Я думал, что изменение высоты могло быть предотвращено, потому что вы видите текст под рамкой средства выбора даты, но это также происходит и с обычным средством выбора даты высотой 216.
Какая ошибка? Твоя догадка так же хороша как и моя.
Также есть 3 допустимые высоты для
UIDatePicker
(иUIPickerView
) 162,0, 180,0 и 216,0. Если вы установите дляUIPickerView
высоты любое другое значение, вы увидите следующее в консоли при отладке на устройстве iOS.источник
Начиная с iOS 9, вы можете свободно изменять
UIPickerView
ширину и высоту. Нет необходимости использовать вышеупомянутые приемы преобразования.источник
Я обнаружил, что вы можете редактировать размер UIPickerView - но не с помощью построителя интерфейса. откройте файл .xib с помощью текстового редактора и установите любой размер окна выбора. Конструктор интерфейсов не сбрасывает размер и вроде работает. Я уверен, что Apple заблокировала размер не зря, поэтому вам придется поэкспериментировать с разными размерами, чтобы увидеть, что работает.
источник
Преимущества:
UIPickerView
вести себя так, как должноUIViewController
viewWillLayoutSubviews
для изменения масштаба / положенияUIPickerView
UIPopover
Недостатки:
UIPickerView
pickerView viewForRow
чтобы отменить преобразование для вложенных представленийРешение:
Подкласс UIPickerView и перезапишите два метода, используя следующий код. Он сочетает в себе подклассы, фиксированную высоту и подход преобразования.
источник
Простой способ изменить видимую высоту представления средства выбора - встроить средство выбора в UIView, отрегулировать высоту родительского представления до высоты, которую вы хотите видеть в средстве выбора, а затем включить «Вырезать подпредставления» в Interface Builder на родительском UIView. или установить
view.clipsToBounds = true
в коде.источник
Clip Subviews
. также размерUIPickerView
должен быть выше - и вы должны нацелить центр вашего,UIPickerView
чтобы быть видимым внутри родителяUIView
UIPickerView
из кода).Я не смог последовать ни одному из приведенных выше советов.
Я просмотрел несколько руководств и нашел это наиболее полезным:
Я добавил следующий код, чтобы установить новую высоту внутри метода "viewDidLoad", который работал в моем приложении.
Надеюсь, это было полезно!
источник
Это сильно изменилось в iOS 9 (в iOS 8 это очень похоже на то, что мы видим здесь). Если вы можете позволить себе настроить таргетинг только на iOS 9, измените размер
UIPickerView
своему усмотрению, установив его рамку. Хорошо!Вот это из примечаний к выпуску iOS 9
источник
Я работаю с ios 7, Xcode 5. Мне удалось косвенно настроить высоту средства выбора даты, включив его в представление. Высота просмотров контейнера может регулироваться.
источник
Создайте представление в IB или коде. Добавьте средство выбора в качестве подвида этого представления. Измените размер представления. Проще всего это сделать в IB. Создайте ограничения от представления к его супервизору и от средства выбора к этому новому представлению.
Поскольку инструмент выбора изгибается вокруг него, он выходит за верхнюю и нижнюю границы представления. Вы можете видеть в IB, когда вы добавляете верхние и нижние ограничения из средства выбора в представление, оно показывает стандартное пространство примерно на 16 точек выше и ниже контейнера супервизора. Установите вид, чтобы обрезать его, если вы не хотите такого поведения (уродливое предупреждение).
Вот как это выглядит при высоте 96 пунктов на iPhone 5. Высота пикера с перетеканием составляет около 130 пунктов. Довольно худая!
Я использую это в своем проекте, чтобы сборщик не растягивался на ненужную высоту. Этот метод обрезает его и заставляет более плотное перетекать. На самом деле он выглядит немного компактнее.
Вот изображение вида, показывающее перетекание.
Вот ограничения IB, которые я добавил.
источник
Даже если это не изменение размера, еще одна уловка может помочь в ситуации, когда UIPicker расположен в нижней части экрана.
Можно попробовать сдвинуть его немного вниз, но центральный ряд должен оставаться видимым. Это поможет открыть некоторое пространство над средством выбора, поскольку нижние строки будут за пределами экрана.
Я повторяю, что это не способ изменить высоту представления UIPicker, а некоторое представление о том, что вы можете сделать, если все другие попытки потерпят неудачу.
источник
Хорошо, после долгой борьбы с глупым выбором в iOS 4, я решил изменить свой элемент управления на простую таблицу: вот код:
Вот файл .h для этого:
вот и все, теперь осталось только создать переменную-член в представлении combobox, которая будет содержать текущий выбор строки, и мы готовы к работе.
Всем нравится.
источник
Обычно вы не можете сделать это в xib или программно настроить фрейм, но если вы откроете его родительский xib в качестве источника и измените высоту оттуда, тогда он будет работать. Щелкните правой кнопкой мыши xib, в котором содержится pickerview, найдите pickerview, и вы можете найти высоту, ширину и т. Д. в этом теге измените высоту, затем сохраните файл.
источник
Насколько мне известно, UIPickerView невозможно сжать. Я также нигде не видел более коротких. Я предполагаю, что это была индивидуальная реализация, если им удалось ее уменьшить.
источник
Если вы хотите создать свой сборщик в IB, вы можете изменить его размер до меньшего размера. Убедитесь, что он по-прежнему правильно рисует, так как наступает момент, когда он выглядит ужасно.
источник
Swift : вам нужно добавить подпредставление с клипом к границам
Это должно добавить обрезанный выбор даты высотой 100 в верхней части контроллера представления.
источник
Мой трюк: используйте слой маски datepicker, чтобы сделать часть datePicker видимой. как вы видите, просто измените рамку datepicke.
источник
Я использую маскирующий слой, чтобы изменить размер отображения
источник
Вставить в стек. Представление стека - это компонент, недавно добавленный Apple в их SDK для iOS, для отражения реализаций на основе сетки в интерфейсных веб-библиотеках java-скриптов, таких как bootstrap.
источник
Как упоминалось выше
UIPickerView
, теперь можно изменять размер. Я просто хочу добавить, что если вы хотите изменить высоту pickerView в ячейке tableView, мне не удалось установить привязку высоты к константе. Однако использование,lessThanOrEqualToConstant
похоже, работает.источник
После долгого дня чесания в затылке я нашел кое-что, что мне подходит. Приведенные ниже коды воссоздают UIDatePicker каждый раз, когда пользователь меняет ориентацию телефона. Это устранит любые сбои, которые возникают у UIDatePicker после изменения ориентации.
Поскольку мы воссоздаем UIDatePicker, нам нужна переменная экземпляра, которая сохранит выбранное значение даты. Приведенные ниже коды протестированы на iOS 4.0.
источник
Если вы хотите установить размер UiPickerView. Приведенный выше код наверняка сработает для вас.
источник
В iOS 5.0 у меня работало следующее:
Это создало средство выбора даты, подобное тому, которое Apple использует в приложении «Календарь» при создании нового события в ландшафтном режиме. (3 строки в высоту вместо 5.) Это не сработало, когда я установил рамку в
initWithFrame:
методе, но пока работает при установке ее отдельным методом.источник
для iOS 5:
если вы быстро взглянете на протокол UIPickerView Справочник по
ты найдешь
Я думаю, это первое, что ты ищешь
источник
pickerView:rowHeightForComponent:
- это метод делегата, определяющий высоту каждой строки, а не высоту окна выбора.