Как скрыть эти две строки в выбранной строке?IOS7 UIPickerView Как скрыть индикатор выбора
ответ
Он работает перед ios7.
pickerView.showsSelectionIndicator = NO;
для получения дополнительной информации в ios7 увидит этот документ
Да, уже пробовал, на док-станции ios7 apple говорится, что его нельзя скрыть, я ищу трюк, есть ли способ скрывать индикаторы? – james075
Сейчас нет технического пути. Если вы захотите, то вы сделаете это по своей логике. –
@ James03, я считаю, нашел способ удалить строки, см. Мой ответ. – morksinaanab
Это легко достигается. Просто поместите свой PickerView внутри ScrollView с нужным размером вашей строки и используйте делегат pickerView: rowHeightForComponent :), чтобы изменить высоту строки сборщика немного больше, чем ваш ScrollView. Таким образом, линии будут скрыты.
Мне нравится этот метод. пользователю легко видеть, что делать, не занимая слишком большого пространства экрана. –
В настройке iOS7 параметр pickerview.showsSelectionIndicator не действует, согласно документации (https://developer.apple.com/library/ios/documentation/userexperience/conceptual/UIKitUICatalog/UIPickerView.html).
Однако, как UIPickerView, в конце концов это UIView с subviews, я проверил, какие подпрограммы там были. Я нашел 3, первый из них содержит все компоненты UIPickerView, а два других - две строки.
Итак, установив второй и третий (индекс 1 и 2), две линии были удалены.
[[pickerview.subviews objectAtIndex:1] setHidden:TRUE];
[[pickerview.subviews objectAtIndex:2] setHidden:TRUE];
Это не очень приятное решение и, безусловно, не совместимое с переходом, но на данный момент оно выполняет свою работу. Надеюсь это поможет.
Кстати. Когда вы удаляете эти строки, внешний вид выглядит странно, потому что 3D-эффект рулона изменяет положение просмотров. Я играл, и вы также можете изменить цвет этих строк следующим образом: '((UIView *) [self.subviews objectAtIndex: 1]). BackgroundColor = [UIColor whiteColor]; ((UIView *) [self.subviews objectAtIndex: 2]). BackgroundColor = [UIColor whiteColor]; ' – morksinaanab
благодарю за ваш ответ, но он выбрал исключение NSRangeException -> - [__ NSArrayI objectAtIndex:]: индекс 1 за пределами для пустых array ' – james075
Я добавил 2 вида, чтобы скрыть эти строки, но это очень уродливо, сейчас нет выбора – james075
[[pickerview.subviews objectAtIndex:1] setHidden:TRUE];
[[pickerview.subviews objectAtIndex:2] setHidden:TRUE];
Используйте это в titleForRow
или viewForRow
метод делегата от pickerView
.
Я решил это с помощью простого трюка: Представление выбора места в представлении, а также установить свойство подзаголовка этого представления = true. Теперь просто установите высоту строки в представлении picker = высота представления контейнера, после чего линия исчезнет.
Просто написать этот код в методе viewdidload
[[PickerView.subviews objectAtIndex:1] setHidden:TRUE];
[[PickerView.subviews objectAtIndex:2] setHidden:TRUE];
У меня такое чувство, что это работало только в вашем viewDidLoad, потому что pickerView был полностью определен. Мне пришлось использовать ответ ChrisH выше для Swift, чтобы скрыть линии. Я не уверен, почему у Apple есть настройки, и они игнорируют это. – LevinsonTechnologies
Да Если вы используете интерфейс-построитель, тогда вы получаете команду pickerview. в противном случае вы должны установить это после того, как программно созданный сборщик – BHASKAR
В ios7 мы не можем скрыли отдельной строкой в UIPickerView , и мы можем знать, что с этой страницы: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIPickerView_Class/index.html#//apple_ref/occ/instm/UIPickerView/showsSelectionIndicator
Но мы можем добавить два UIViews, чтобы покрыть его и ширину двух UIViews равен 1. Некоторые примеры кода здесь:
s_leftLine = [[UIView alloc] initWithFrame:CGRectMake(s_pickerView.frame.size.height/2,
s_pickerView.frame.size.width/2 - kWidthOfPickerPage/2 + 1,
1,
s_pickerView.frame.size.height)];
s_leftLine.backgroundColor = [UIColor whiteColor];
s_leftLine.layer.zPosition = s_pickerView.layer.zPosition + 1; // make sure the line is on the top
[s_pickerView addSubview:s_leftLine];
Хорошо, это будет намного лучше:] , если у кого-то есть лучший ответ, просто запишите его для обмена :)
Это сработало для меня в Swift в iOS 9 Beta.
datePicker.subviews[0].subviews[1].hidden = true
datePicker.subviews[0].subviews[2].hidden = true
по-прежнему работает в iOS 11. thanks –
на основе других ответов, я решил перечислить подвиды и увидел, что линии имеют высоту 0.5
так что мое решение теперь выглядит в Swift:
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
pickerView.subviews.forEach({
$0.hidden = $0.frame.height < 1.0
})
return myRowCount
}
И объективно- C
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
[pickerView.subviews enumerateObjectsUsingBlock:^(UIView *subview, NSUInteger idx, BOOL *stop) {
subview.hidden = (CGRectGetHeight(subview.frame) < 1.0)
}];
return myRowCount
}
Очевидно, что это не особенно перспективное доказательство, но, вероятно, больше, чем скрытие подсмотра при заданном индексе.
Edit: обновление для обработки случая, предусмотренного @Loris
Кстати, если вы добавили некоторый subview в UIPickerView, который также имеет высоту 0,5, вы можете использовать '.tag' для этого поднабора в порядке чтобы идентифицировать его и предотвратить скрытие – efimovdk
На iPhone 7 + высота линии равна 2/3 (0,6666666666666667) вместо 0,5, поэтому я выяснил, была ли высота меньше 1. 'func numberOfComponentsInPickerView (pickerView: UIPickerView) -> Int { pickerView.subviews.forEach ({ $ 0.hidden = $ 0.frame.height <= 1 }) возвращение myRowCount } ' – Loris
Swift 3 Версия (рабочий):
pickerView.subviews[1].isHidden = true
pickerView.subviews[2].isHidden = true
работал для меня, поместил его в функцию viewDidLoad. благодаря! –
Для меня это работа над viewDidApper. – Jaydeep
я выбрал другой подход, чтобы сделать его немного более на будущее просто в случае, если Apple решит что-то изменить по строке
for subview in setPickerView.subviews{
if subview.frame.origin.y != 0{
subview.isHidden = true
}
}
так как местоположение (subView, содержащее элементы) 0, то я смело могу скрыть что-нибудь еще, не рискуя индекса из оценки точности
Наслаждайтесь
EDIT: Я забыл вам сказать, что я положил его в методе viewDidLayoutSubviews!
Этот код работает отлично IOS 10 с быстрым 3
Просто добавьте этот код в классе контроллера представления.
override func viewDidLayoutSubviews() {
timePickerView.subviews[1].isHidden = true
timePickerView.subviews[2].isHidden = true
}
Должны быть сдвиги индекса жесткого кода. Может произойти сбой - это изменения iOS. –
Вы также можете сделать пристройку к UIPickerView:
extension UIPickerView {
func hideSelectionIndicator() {
for i in [1, 2] {
self.subviews[i].isHidden = true
}
}
}
А потом просто позвонить myPickerView.hideSelectionIndicator()
для каждого PickerView вы хотите изменить.
func numberOfComponents(in pickerView: UIPickerView) -> Int
{
pickerView.subviews.forEach({
$0.isHidden = $0.frame.height < 1.0
})
return 1
}
- 1. быстры сборщика вид скрыть индикатор выбора
- 2. UIPickerView мульти выбор на ios7
- 3. iOS7 UIPickerView/UIScrollView
- 4. Странный UIPickerView в IOS7
- 5. UIPickerView - Невозможно выбрать элемент для выбора в ios7
- 6. Индикатор выбора вида UIPicker Issue
- 7. Как скрыть индикатор выполнения?
- 8. Как скрыть UIPickerView на 'viewDidLoad'?
- 9. iOS7 Индикатор прокрутки UIWebView исчезает
- 10. Индикатор выбора, не отображающийся в окне выбора внутри листа действий
- 11. Показать весь UIPickerView, а затем скрыть UIPickerView после выбранного
- 12. iOS7-iPhone представляет контроллер представления - UIPickerView
- 13. Задача выбора вращения вращения UIPickerView
- 14. Сохранение выбора UIPickerView в переменной
- 15. Индикатор выбора Tab
- 16. Скрыть индикатор активности
- 17. Индикатор радиолюбителя Android скрыть
- 18. Как настроить UIPickerView?
- 19. Выбор массива выбора UIPickerView Swift
- 20. Как скрыть UIPickerview при нажатии кнопки программно?
- 21. Изменить цвет индикаторов выбора UIPickerView
- 22. Изменение высоты представления выбора UIPickerView
- 23. Скрыть Battry Иконка в ios7
- 24. IOS7 Как убедиться, что выбран UIPickerview, а не TableViewCell
- 25. Как скрыть строку состояния в iOS7?
- 26. Скрыть индикатор загрузки после 100%
- 27. Скрыть индикатор активности не работает
- 28. Индикатор активности после ячейки выбора
- 29. Как скрыть индикатор выполнения для ExportAsFixedFormat
- 30. Nativescript: Как скрыть индикатор прокрутки на scrollview
Линии по дизайну. Я был бы очень удивлен, если бы вы могли их удалить. –