quitar por personalizar home flotante control como centro boton barra aparece activar abajo ios swift uinavigationbar navbar ios11

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



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 } }