ocultas ocultar como aplicaciones ios uiview ios7 uipickerview

como - IOS7 UIPickerVer cómo ocultar el indicador de selección



como ocultar aplicaciones en ios 10 (14)

¿Cómo puedo ocultar esas 2 líneas en la fila seleccionada?


En base a las otras respuestas, decidí enumerar las subvistas y vi que las líneas tienen una altura de 0.5 por lo que mi solución ahora se ve así en Swift:

func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int { pickerView.subviews.forEach({ $0.hidden = $0.frame.height < 1.0 }) return myRowCount }

Y en Objective-C

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView { [pickerView.subviews enumerateObjectsUsingBlock:^(UIView *subview, NSUInteger idx, BOOL *stop) { subview.hidden = (CGRectGetHeight(subview.frame) < 1.0) }]; return myRowCount }

Obviamente no es particularmente a prueba de futuro, pero probablemente más que ocultar una subvista en un índice dado.

Editar: actualizado para manejar el caso proporcionado por @Loris


En ios7 no podemos ocultar la línea separada en UIPickerView y podemos saberlo desde esta página: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIPickerView_Class/index.html#//apple_ref/occ/instm/UIPickerView/showsSelectionIndicator

Pero podemos agregar dos UIViews para cubrirlo y el ancho de dos UIViews es 1. Algunos ejemplos de código aquí:

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];

Ok, esto será mucho mejor:] si alguien tiene una mejor respuesta solo escríbela para compartir :)


En la configuración de iOS7, el parámetro pickerview.showsSelectionIndicator no tiene ningún efecto, según la documentación ( https://developer.apple.com/library/ios/documentation/userexperience/conceptual/UIKitUICatalog/UIPickerView.html ).

Sin embargo, como UIPickerView al final es una UIView con subvistas, verifiqué qué subvistas había. Encontré 3, el primero contenía todos los componentes de UIPickerView, y los otros dos son las dos líneas.

Así que al establecer el segundo y el tercero (índice 1 y 2) ocultos, las dos líneas se eliminaron.

[[pickerview.subviews objectAtIndex:1] setHidden:TRUE]; [[pickerview.subviews objectAtIndex:2] setHidden:TRUE];

No es una solución realmente buena, y definitivamente no es compatible con versiones anteriores, pero por ahora hace el trabajo. Espero que esto ayude.



Este código funciona bien para iOS 10 con swift 3

Simplemente agregue este código en su clase de controlador de vista.

override func viewDidLayoutSubviews() { timePickerView.subviews[1].isHidden = true timePickerView.subviews[2].isHidden = true }


Esto funcionó para mí en Swift en iOS 9 Beta.

datePicker.subviews[0].subviews[1].hidden = true datePicker.subviews[0].subviews[2].hidden = true


Esto se logra fácilmente. Simplemente coloque su PickerView dentro de un ScrollView con el tamaño deseado de su fila, y use el método delegate selector (pickerView: rowHeightForComponent :) para cambiar la altura de la fila del selector a un poco más grande que su ScrollView. De esa manera, las líneas estarán ocultas.


Lo resolví con un simple truco: colocar la vista del selector en una vista y establecer las subvistas del clip como propiedad de esta vista = verdadera. Ahora, simplemente configure la altura de la fila en la vista del selector = altura de la vista del contenedor, entonces la línea desaparecerá.


Opté por un enfoque diferente para hacerlo un poco más a prueba de futuro, en caso de que Apple decida cambiar algo más adelante

for subview in setPickerView.subviews{ if subview.frame.origin.y != 0{ subview.isHidden = true } }

ya que la ubicación de origen (subvista que contiene los elementos) es 0, entonces puedo ocultar cualquier cosa sin poner en riesgo un error de índice fuera de límites

Disfrutar

EDITAR: ¡Olvidé decirte que lo puse en el método viewDidLayoutSubviews!


Simplemente escriba este código en su método viewdidload

[[PickerView.subviews objectAtIndex:1] setHidden:TRUE]; [[PickerView.subviews objectAtIndex:2] setHidden:TRUE];


Swift 3 Version (trabajo):

pickerView.subviews[1].isHidden = true pickerView.subviews[2].isHidden = true


También puede hacer una extensión a UIPickerView:

extension UIPickerView { func hideSelectionIndicator() { for i in [1, 2] { self.subviews[i].isHidden = true } } }

Y luego simplemente llame a myPickerView.hideSelectionIndicator() para cada PickerView que desee modificar.


[[pickerview.subviews objectAtIndex:1] setHidden:TRUE]; [[pickerview.subviews objectAtIndex:2] setHidden:TRUE];

Use esto en el método de delegado viewForRow o viewForRow de pickerView .


func numberOfComponents(in pickerView: UIPickerView) -> Int { pickerView.subviews.forEach({ $0.isHidden = $0.frame.height < 1.0 }) return 1 }