ios - por - no me aparece el centro de control iphone
ios 11 barra de navegación transparente (4)
La creación de una barra de navegación transparente ya no funciona con ios 11. Obtengo esta barra negra en la parte superior porque la vista de la tabla ya no está debajo de la barra (las inserciones en el guión gráfico están configuradas correctamente para comenzar desde 0) ¿Alguna idea de por qué?
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
Me enfrenté al mismo problema y pude resolverlo. Esto es lo que funciona para mí:
public override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.backgroundColor = UIColor.clear
self.navigationController?.navigationBar.isTranslucent = true
if #available(iOS 11.0, *) {
collectionView.contentInsetAdjustmentBehavior = .never
} else {
// Fallback on earlier versions
}
}
Y una cosa más, que encontré todavía necesaria para que funcione. Lo más probable es que tenga su UICollectionView / UITableView / UIScrollview alineada con la parte superior del área segura. Cambie esta restricción para que se alinee en la parte superior de la vista superior en su lugar.
Y eso es. ¿No es sencillo e intuitivo? Gracias apple
Tuve un problema similar. Puse "Bordes extendidos: Debajo de la barra superior / inferior / opaca" para UIViewController en el guión gráfico. Me gusta esto. También puede intentar deshabilitar " Ajustar automáticamente las inserciones de la vista de desplazamiento "
antiguo:
Si ha usado tableView, agregue el código:
if (@available(iOS 11.0, *)) {
self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
} else {
self.automaticallyAdjustsScrollViewInsets = NO;
}
nuevo:
un cambio de automaticAdjustsScrollViewInsets en iOS11:
@property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets
API_DEPRECATED_WITH_REPLACEMENT("Use UIScrollView''s
contentInsetAdjustmentBehavior instead", ios(7.0,11.0),tvos(7.0,11.0));
// Defaults to YES
sobre contentInsetAdjustmentBehavior:
typedef NS_ENUM(NSInteger, UIScrollViewContentInsetAdjustmentBehavior) {
UIScrollViewContentInsetAdjustmentAutomatic, // Similar to .scrollableAxes, but will also adjust the top & bottom contentInset when the scroll view is owned by a view controller with automaticallyAdjustsScrollViewContentInset = YES inside a navigation controller, regardless of whether the scroll view is scrollable
UIScrollViewContentInsetAdjustmentScrollableAxes, // Edges for scrollable axes are adjusted (i.e., contentSize.width/height > frame.size.width/height or alwaysBounceHorizontal/Vertical = YES)
UIScrollViewContentInsetAdjustmentNever, // contentInset is not adjusted
UIScrollViewContentInsetAdjustmentAlways, // contentInset is always adjusted by the scroll view''s safeAreaInsets
} API_AVAILABLE(ios(11.0),tvos(11.0));
/* Configure the behavior of adjustedContentInset.
Default is UIScrollViewContentInsetAdjustmentAutomatic.
*/
@property(nonatomic) UIScrollViewContentInsetAdjustmentBehavior contentInsetAdjustmentBehavior API_AVAILABLE(ios(11.0),tvos(11.0));
Podría ser un problema de safeArea para iOS11. intente esto defina de un experto :
#define adjustsScrollViewInsets_NO(scrollView,vc)/
do { /
_Pragma("clang diagnostic push") /
_Pragma("clang diagnostic ignored /"-Warc-performSelector-leaks/"") /
if ([UIScrollView instancesRespondToSelector:NSSelectorFromString(@"setContentInsetAdjustmentBehavior:")]) {/
[scrollView performSelector:NSSelectorFromString(@"setContentInsetAdjustmentBehavior:") withObject:@(2)];/
} else {/
vc.automaticallyAdjustsScrollViewInsets = NO;/
}/
_Pragma("clang diagnostic pop") /
} while (0)
para tener un comportamiento consistente entre iOS 10 y 11, intente agregar esto a su navigationViewController
func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) {
if navigationBar.isTranslucent, #available(iOS 11.0, *) {
viewController.additionalSafeAreaInsets.top = -navigationBar.bounds.height
}
}