Después de actualizar a Xcode 5, las barras de navegación en todas las vistas de mi aplicación se han desplazado hacia abajo. Aquí hay algunas capturas de pantalla, la primera muestra todo lo que hay en la vista a medida que se baja y la segunda muestra todo intacto. La barra de búsqueda debe comenzar donde está la barra de navegación.
¿Alguien sabe cómo puedo solucionar esto?
editar: he probado esta recomendación anteriormente:
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeNone;
Pero produce resultados muy extraños.
Esto puede deberse a que tengo un "menú deslizante" debajo de este controlador de vista que aparece debido a la transparencia de la barra de navegación.
ios
objective-c
ios7
uinavigationbar
uistatusbar
Sam D20
fuente
fuente
Respuestas:
Establezca la propiedad translúcida de la barra de navegación en NO :
Esto evitará que la vista se enmarque debajo de la barra de navegación y la barra de estado.
Si tiene que mostrar y ocultar la barra de navegación, utilice
en tu
viewDidLoad
método.fuente
viewDidLoad
sin embargo, no produce cambios.De forma
iOS 7
predeterminada , el valor de la propiedad translúcida del controlador es SÍ, por lo que establece la propiedad translúcida NO para este problema.fuente
Puede desactivar "Extender bordes" en el inspector de atributos del controlador de vista de esta pantalla (como se muestra en la imagen de abajo):
fuente
Esto también funciona para Swift en iOS 8.1
fuente
Si desea mantener la translucidez en su
navigationBar
, al final de suviewDidLoad
o en suviewWillAppear
agregue esta línea de código:De alguna manera, si su
scrollView
subclase (UITableView
,UICollectionView
, etc.) está enindex
0 en su visión actualsubviews
, que se ajustan automáticamente las inserciones de acuerdo a sunavigationBar
. Y tampoco debería afectar su interfaz de usuario en versiones anteriores a iOS7.EDITAR Si inicializa su
UITableView
programa programáticamente, entonces es mejor agregarlo a la vista usando este[self.view insertSubview:self.tableView atIndex:0];
fuente
[self.view insertSubview:self.tableView atIndex:0];
lugar de enviarla al fondo después de agregarla.Rápido 4 :
Establezca la siguiente línea de código en el método viewDidLoad:
fuente
Puede agregar este método en su controlador de vista como se muestra en esta URL :
fuente
Otro enfoque es configurarlo
self.automaticallyAdjustsScrollViewInsets = YES;
en su controlador de vista. Esto está habilitado por defecto. Pero en tu caso:Veo que está utilizando EGORefreshHeaderView. Juega con contentInset de UITableView. Entonces, cuando lo suelte, el encabezado restablecerá el recuadro superior en lugar de restaurar el valor anterior.
fuente
Si desea tener un control completo sobre las vistas y evitar ajustes defectuosos de iOS, subclase UITableView y ajuste las inserciones (tanto de desplazamiento como de indicadores) en - (void) willMoveToWindow: (UIWindow *) newWindow. Funciona para mi.
fuente
Otra opción es abrir su archivo Info.plist en modo de código fuente e ingresar la siguiente información:
Espero que esto ayude.
fuente