天道酬勤,学无止境

uinavigationbar

move navigationBar's left and right barButtonItem's vertically upwards

问题 我试图将导航栏的左右 barButtonItem 垂直向上移动,但没有成功。 我可以设法向上移动标题视图,但对 barButtonItem 使用相同的方法并没有做任何事情。 我想要达到的效果是在 safari 的 Bookmarks 页面上使用的: 我希望在没有任何导航栏子类的情况下实现这一点,这样我就可以保持半透明。 我的方法是直接在 IB 中为 leftBarButtonItem、Title 和 rightBarButtonItem 将 UIView 添加到导航栏。 这适用于标题,我可以添加标题和分段控件。 问题是当我添加左右 barButtonItem 时,我无法将它们垂直移动到分段控件上方。 我正在使用以下代码尝试在 viewDidLoad() 中垂直移动 barButtonItem: self.navigationItem.rightBarButtonItem?.setBackgroundVerticalPositionAdjustment(-15, for: UIBarMetrics.defaultPrompt) self.navigationItem.rightBarButtonItem?.setBackgroundVerticalPositionAdjustment(-15, for: UIBarMetrics.compactPrompt)

2022-05-17 02:13:03    分类:技术分享    ios   swift   uinavigationbar   uinavigationitem

iOS 10 contacts photo goes on navigation bar

问题 我想在 iOS 10 中构建一个与联系人应用程序相同动画的视图控制器。当您向下滚动页面时,联系人的照片会出现在导航栏的中间。 iOS 10 中有 API 还是自定义实现? 回答1 研究 有许多技术试图修改导航栏。 我花了很多时间一个接一个地尝试: Apple 的官方教程 https://developer.apple.com/library/content/samplecode/NavBar/Introduction/Intro.html#//apple_ref/doc/uid/DTS40007418-Intro-DontLinkElementID_2 仅在视觉上扩展了导航栏。 事实上,将第二个视图放在栏下方并将颜色和线条设置为看起来第二个视图是栏的一部分。 但事实并非如此。 Levelmoney 为自定义导航栏制作了不错的库:https://github.com/Levelmoney/resizable-navigation-bar 另一种解决方案是创建您的视图,它看起来像导航栏(使用 Apple 示例中的背景颜色和阴影),并将其放入导航栏中,如下所示: self.navigationController!.navigationBar.addSubview(self.titleView!)然而这看起来很棒,它隐藏了导航栏元素并且后退按钮不响应点击。

2022-05-15 21:46:05    分类:技术分享    ios   uinavigationbar

Tabbar Item in Swift

问题 我在Tabbar 控制器中有一些问题。 我把“ FAQ ”标签栏项目放在底部。 当应用程序在小屏幕设备上运行时,它会自动出现在更多部分。 问题是我将“导航栏”放在常见问题视图控制器中。 对于大屏幕(ipad),FAQ 栏项目显示在底部。 当导航栏项目转到更多部分时,导航栏显示为两个栏。 一个栏是我制作的,另一个栏是默认栏。 我目前的问题解决方式是 if (UIDevice.current.userInterfaceIdiom == UIUserInterfaceIdiom.pad) { //ipad navBar.isHidden = false } else { navBar.isHidden = true } 我不知道这种方式是对还是错。 当它出现在小屏幕上时,请帮助我如何删除导航栏。 现在,我正在使用Swift 3 (Xcode 8) 。 英语不是我的母语。 我为我的英语语法感到抱歉。 回答1 对于您的用例,您可以试试这个, `if UIScreen.main.sizeType == .iPhone6Plus || UIScreen.main.sizeType == .iPhonePlus || UIScreen.main.sizeType == .iPhone6 || UIScreen.main.sizeType == .iPhoneX || UIScreen

2022-05-15 12:57:11    分类:技术分享    uinavigationcontroller   swift3   uinavigationbar   xcode8   uinavigationitem

UINavigationBar refuses to show in Modal View Controller

问题 我正在使用 RootViewController 中的以下代码加载模态视图控制器: [self.navigationController presentModalViewController:accountViewController animated:YES]; 在 accountViewController xib 文件中,我设置了一个导航栏。 我的 MainWindow.xib 和 RootViewController.xib 也正确设置了导航栏。 此外,我的应用程序委托已正确设置导航控制器(我假设): UINavigationController *aNavigationController = [[UINavigationController alloc] initWithRootViewController:rootViewController]; self.navigationController = aNavigationController; [window addSubview:navigationController.view]; 但是,当我加载我的 accountViewController 时, UINavigationBar 无处可寻。 不能在模态视图中显示 UINavigationBar 吗? 我打算用它来隐藏后退按钮,并添加一个右键

2022-05-13 17:26:03    分类:技术分享    iphone   uinavigationbar   modalviewcontroller

Programmatically add a UINavigationBar that does underlap the status bar

问题 我在视图控制器loadView中手动添加 UINavigationBar 。 我正在使用制图(https://github.com/robb/Cartography)通过自动布局来布局视图。 self.edgesForExtendedLayout = UIRectEdge.None let navBar = UINavigationBar() navBar.delegate = self view.addSubview(navBar) constrain(navBar) { bar in bar.top == bar.superview!.top bar.centerX == bar.superview!.centerX bar.width == bar.superview!.width } 委托方式: public func positionForBar(bar: UIBarPositioning) -> UIBarPosition { return .TopAttached } 然而结果是小栏,而不是状态栏下的扩展版本。 回答1 如果您以编程方式添加导航栏,则需要注意edgesForExtendedLayout和任何栏定位 API 都不会与界面的布局指南相关。 由于您现在已经表明要管理此栏,因此系统无法强制它是否应该在状态栏下方。 您需要做的是配置约束

2022-05-09 22:59:34    分类:技术分享    ios   uiview   uinavigationbar

What's the best way to add a view under UINavigationBar in iOS7

问题 在 ios7 上,许多应用程序(Apple Messages、Facebook Messenger、Calendar)都有视图出现在 UINavigationBar 下,通常带有似乎是标准动画的内容。 由于它看起来很标准并且与 UIToolBar 看起来很多,我一直在寻找实现它的标准方式,但找不到任何东西。 有没有更好的方法将 UIToolBar 添加到 UINavigationBar? 回答1 您应该遵循这种简单的方法。 像这样添加一个UIToolBar 。 UIBarButtonItem *flexiableItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:nil]; UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem

2022-05-07 07:40:13    分类:技术分享    ios   ios7   uinavigationbar   uitoolbar

iOS7 - Change UINavigationBar border color

问题 是否可以在 iOS7 中更改 UINavigationBar 的灰色边框底部颜色? 我已经尝试删除到边界,但这不起作用: [[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]]; 谢谢! 回答1 这是一个随高度改变底部颜色的类别: [self.navigationController.navigationBar setBottomBorderColor:[UIColor redColor] height:1]; 目标 C: UINavigationBar+Helper.h #import <UIKit/UIKit.h> @interface UINavigationBar (Helper) - (void)setBottomBorderColor:(UIColor *)color height:(CGFloat)height; @end UINavigationBar+Helper.m #import "UINavigationBar+Helper.h" @implementation UINavigationBar (Helper) - (void)setBottomBorderColor:(UIColor *)color height:(CGFloat)height { CGRect

2022-05-06 13:19:14    分类:技术分享    colors   border   uinavigationbar   ios7   xcode5

Resizing UINavigationBar on rotation

问题 我有一个处理 UIView 的 UIViewController 子类。 视图控制器以模态方式呈现(它从屏幕底部向上滑动)。 在视图的顶部,我添加了一个导航栏。 请注意,此栏不由导航控制器处理。 我想让导航栏在视图旋转到横向时缩小高度(类似于它在由 UINavigationController 处理时的行为)。 但是,我无法在 IB 中将其自动调整大小掩码设置为灵活高度,并且在代码中这样做会导致导航栏完全消失。 有没有办法做到这一点? UINavigationController 是如何完成的? PS 我宁愿不必求助于缩放变换,因为这会弄乱标题中的文本。 编辑:我在一点帮助下解决了这个问题,请阅读下面发布的答案。 回答1 - (void) updateNavBar { UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; if ((UIInterfaceOrientationLandscapeLeft == orientation) || (UIInterfaceOrientationLandscapeRight == orientation)) { myNavBar.frame = CGRectMake(0, 0, 480, 34); }

2022-05-06 08:01:19    分类:技术分享    iphone   rotation   uinavigationbar   landscape   autoresize

Set titleview for all navigationcontroller and navigationitem

问题 [[[UINavigationBar appearance] setTitleView:button] 回答1 自定义导航栏的外观 可以修改 barStyle、tintColor 和 translucent 属性,但绝对不能直接更改 UIView 级别的属性,例如 frame、bounds、alpha 或 hidden 属性。 有关更多详细信息,您可以关注苹果文档 UINavigationBar 类参考 编辑-> 我解决了你的问题 [[UINavigationBar appearance] addSubview:yourView]; 其他导航相关查询 回答2 试试这哥们... //put whatever object in this view..for example button that you want to put... UIView* ctrl = [[UIView alloc] initWithFrame:navController.navigationBar.bounds]; ctrl.backgroundColor = [UIColor yellowColor]; ctrl.autoresizingMask = UIViewAutoresizingFlexibleWidth; [navController.navigationBar addSubview

2022-05-04 16:03:07    分类:技术分享    iphone   objective-c   ios   uinavigationcontroller   uinavigationbar

Using UINavigationController view

问题 我想更好地了解 UINavigationController 的使用。 我已经使用 UINavigationViewController 以及其他两个视图控制器设置了一个新项目。 在我的应用程序委托中,我有以下内容: self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. self.window.backgroundColor = [UIColor whiteColor]; firstViewController = [[NCTFirstViewController alloc] initWithNibName:@"NCTFirstViewController" bundle:nil]; navController = [[NCTNavViewController alloc] initWithRootViewController:firstViewController]; self.window.rootViewController = self.navController; [self.window makeKeyAndVisible]; 在我的

2022-05-04 12:29:21    分类:技术分享    ios   ios5   uiviewcontroller   uinavigationcontroller   uinavigationbar