首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有办法改变UINavigationController Swift Xcode中UINavigationBar的高度?

在UINavigationController中,可以通过自定义UINavigationBar的外观来改变其高度。以下是一种方法:

  1. 创建一个自定义的UINavigationBar子类,例如CustomNavigationBar。
  2. 在CustomNavigationBar类中,重写intrinsicContentSize属性,将其高度设置为所需的高度。例如:
代码语言:txt
复制
class CustomNavigationBar: UINavigationBar {
    override var intrinsicContentSize: CGSize {
        return CGSize(width: UIView.noIntrinsicMetric, height: 100) // 设置为100,可以根据需要进行调整
    }
}
  1. 在需要使用自定义高度的地方,将UINavigationBar替换为CustomNavigationBar。例如,在AppDelegate的application(_:didFinishLaunchingWithOptions:)方法中:
代码语言:txt
复制
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // 创建自定义的UINavigationBar
    let customNavigationBar = CustomNavigationBar(frame: CGRect.zero)
    
    // 设置为全局的UINavigationBar外观
    UINavigationBar.appearance().subclass(for: CustomNavigationBar.self)
    
    // 创建并设置根视图控制器
    let rootViewController = UIViewController()
    let navigationController = UINavigationController(rootViewController: rootViewController)
    navigationController.navigationBar = customNavigationBar
    
    // 设置为根视图控制器
    window?.rootViewController = navigationController
    window?.makeKeyAndVisible()
    
    return true
}

通过以上步骤,你可以在Swift和Xcode中改变UINavigationController中UINavigationBar的高度。请注意,这只是一种方法,你可以根据需要进行调整和修改。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS透明导航栏平滑过渡(进阶版)引实现过程结

首先我们遍历打印出UINavigationBar所有子视图,是所有,包括子视图一层层子视图,来看看到底导航栏都包含了哪些东西: 上面这张图就是导航栏UINavigationBar所包含所有子view...根据上面得到信息,我们就尝试将_UIBarBackground、UIImageView、UIVisualEffectView alpha 值设为 1 或者 0 来改变导航栏背景透明度。...这样每个 ViewController 都可以管理自己导航栏透明度,在这个新增属性setter方法,我们调用前面在在 UINavigationController Category 添加设置导航栏透明度方法...,我们可以在 UINavigationController Delegate 添加一个处理,监控松手后时自动完成返回还是取消返回操作,同时使用 UIView 动画(关于 UIView 动画可以看我这篇文章...再次宣传,代码可以在示例工程下载(觉得有帮助小伙伴请不吝加Star~):https://github.com/Cloudox/SmoothNavDemo ---- 参考(swift):http://www.jianshu.com

3K40
  • UI篇-UINavigationController之易忘补充

    设置导航栏背景图片 (多见于导航背景颜色是渐变颜色,使用一张图片)但是这张图片设置好以后,所有的控件Y坐标都会下移64,也就是说,这张图片会占用屏幕64pt 高度屏幕,而且无法被普通试图覆盖使用...导航高度修改为0 ?...UINavigationItem属于MVCM,封装了要显示在UiNavigationBar数据,定义了UINavigationItem上按钮触发事件,外观等 -initWithBarButtonSystemItem...:左按钮  rightBarButtonItem :右按钮  backBarButtonItem  :返回按钮 与UINavigationController相似,UINavigationBar...UINavigationController是一个viewController UINavigationBar是一个view UINavigationItem是一个NSObject UIBarButtonItem

    2.1K20

    你可能需要为你 APP 适配 iOS 11

    ;iOS 11 新增属性 UINavigationController和滚动交互 滚动时候,以下交互操作都是由UINavigationController负责调动: UIsearchController...UIToolbar and UINavigationBar— Layout 在 iOS 11 ,当苹果进行所有这些新特性时,也进行了其他优化,针对 UIToolbar 和 UINavigaBar 做了新自动布局扩展支持...要避免视图尺寸为0,可以从以下方面做: UINavigationBar 和 UIToolbar 提供位置 开发者则必须提供视图size,有三种方式: 对宽度和高度约束; 实现 intrinsicContentSize...contentInset给其最顶层viewControllerscrollView,在iOS11进行了一个很大改变,不再通过scrollViewcontentInset属性了,而是新增了一个属性...Self-Sizing在iOS11下是默认开启,Headers, footers, and cells都默认开启Self-Sizing,所有estimated 高度默认值从iOS11之前 0 改变

    1.6K60

    【IOS开发基础系列】Storyboard专题

    当然,这并不是真正UINavigationBar对象,而只是一个模拟“假”导航条。         ...PlayersViewController 位于第一个tab NavigationController 容器,因此我们先获得UINavigationController 对象: UINavigationController...默认 label 将消失。         首先增加 cell 高度为55 像素。拖拽它下端拉柄可以改变高度,也可以修改Size 面板Row height 值。             ...我们修改了模板cell 高度,但tableView 并不知道。有两个办法改变table view Row Height 属性,或者修改 heightForRowAtIndexPath 方法。...如果你用拖拽而不是直接键入方式改变cell 高度,tableview Row Height 属性也会自动随之改变。         再次运行程序,这次看起来就好多了。

    1K30

    Swift如何给应用添加3D Touch菜单

    OneSwift – iOS Tips Based On Swift 今天为大家带来是给应用添加3D Touch菜单,这样可以方便用户在首页即可快速访问某些页面。...一、创建自定义3D Touch菜单 在AppDelegatedidFinishLaunchingWithOptions,我们添加下列代码,来实现按钮添加。...3DTouch Xcode原生图标icon图样预览 二、为每个按钮添加响应事件 接着我们为每个按钮添加响应事件,因为我四个按钮刚好都到一个固定页面,所以响应事件实现页面的跳转即可。...UINavigationController let rootViewController = rootNavigationViewController?....GitHub:OneSwift – iOS Tips Based On Swift 微博:xDEHANG 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/101675

    96520

    Swift Runtime ?

    你肯定也想过       在OC相信每一个iOS开发都知道Runtime, 现在Swift也更新到4.0版本了,要是你也学习过Swift的话你可能也会想过这样一个问题,OC大家都知道是有动态性,你能通过...SwiftSwift函数调用已经不是OC运行时发送消息,和C类似,在编译阶段就确定了调用哪一个函数,所以纯Swift类我们是没办法通过运行时去获取到它属性和方法。      ...想一想,要是真的Swift办法利用Runtime,那是一件得多让人失望事!答案也肯定是否定,我们还是能让Swift用Runtime。...对于纯粹Swift类,由于前面的测试你知道无法拿到类属性饭方法等,也就没办法进行方法替换,但是对于继承自NSObject类,由于集成了OC所有特性,所以是可以利用Runtime属性来进行方法替换...2、在应用这点知识时候,可以直接在ScrollView滚动代理方法里面通过滚动距离改变透明度生成你需要Color,然后直接就在它代理方法调用setNavigationBackgroundColor

    4.9K71

    Swift-Runtime总结

    SwiftSwift函数调用已经不是OC运行时发送消息,和C类似,在编译阶段就确定了调用哪一个函数,所以纯Swift类我们是没办法通过运行时去获取到它属性和方法。      ...Swift 对于继承自OC类,为了兼容OC,凡是继承与OC都是保留了它特性,所以可以使用Runtime获取到它属性和方法等等其他我们在OC获得东西。      ...那这样就又衍生出一个问题   ----       那Swift就没办法利用Runtime了吗?       想一想,要是真的Swift办法利用Runtime,那是一件得多让人失望事!...不知道大家有没有遇到过?)      ...2、在应用这点知识时候,可以直接在ScrollView滚动代理方法里面通过滚动距离改变透明度生成你需要Color,然后直接就在它代理方法调用setNavigationBackgroundColor

    86830

    你可能需要为你 APP 适配 iOS11

    4、UINavigationController和滚动交互 滚动时候,以下交互操作都是由UINavigationController负责调动: 所以,如果你使用navigation bar,组装push...5、UIToolbar and UINavigationBar— Layout 在 iOS 11 ,当苹果进行所有这些新特性时,也进行了其他优化,针对 UIToolbar 和 UINavigaBar...要避免视图尺寸为0,可以从以下方面做: ● UINavigationBar 和 UIToolbar 提供位置 ● 开发者则必须提供视图size,有三种方式: ① 对宽度和高度约束; ② 实现 intrinsicContentSize...: 2、Table Views :在iOS 11默认启用Self-Sizing 这个应该是UITableView最大改变。...都默认开启Self-Sizing,所有estimated 高度默认值从iOS11之前 0 改变为UITableViewAutomaticDimension: 如果目前项目中没有使用estimateRowHeight

    2.4K00

    扒虫篇-Bug日志 Ⅵ

    Xcode开发者账号登陆不上 ? 试了试其他账号也是一样,在账号密码没有输入错误情况下还是登陆不上。 解决办法:重启电脑就解决了。 2. Xcode9往工程拖入文件很容易报错 ?...很奇怪是,以前Xcode拖入文件时,这里m文件都会自动添加进来,但是Xcode9会经常出现往工程拖入文件 报 Undefined symbols for architecture x86_64...:错 解决办法: 如下图添加进来即可 ?...iOS 8隐藏statusBar需要在UIImagePickerControllerdelegate实现,添加以下代码 - (void)navigationController:(UINavigationController...这是因为:self.whiteBgView高度是0,造成,我晕。正确设置为,self.whiteBgView高度动态设置好了后再加边框,这样就不会出现这样问题了。

    81550

    你可能需要为你APP适配iOS11

    UINavigationController和滚动交互 滚动时候,以下交互操作都是由UINavigationController负责调动: 所以,如果你使用navigation bar,组装push...UIToolbar and UINavigationBar— Layout 在 iOS 11 ,当苹果进行所有这些新特性时,也进行了其他优化,针对 UIToolbar 和 UINavigaBar 做了新自动布局扩展支持...要避免视图尺寸为0,可以从以下方面做: ● UINavigationBar 和 UIToolbar 提供位置 ● 开发者则必须提供视图size,有三种方式:  ① 对宽度和高度约束; ② 实现 intrinsicContentSize...: Table Views :        在iOS 11默认启用Self-Sizing 这个应该是UITableView最大改变。...都默认开启Self-Sizing,所有estimated 高度默认值从iOS11之前 0 改变为UITableViewAutomaticDimension: 如果目前项目中没有使用estimateRowHeight

    81720

    成为一名优秀 Swift 开发人员 10 个小技巧

    使用 Protocol Protocol 在 Swift 可以做很多事情。使用协议,我们可以设计软件组件行为,使其符合特定实现。...Swift 协议类似于 Java 接口,这是 OOP 编程中最基础理论。...重构并提高可性 Xcode 11 对重构功能做了很大改进。新 Xcode 重构操作更加简洁,让我们可以很容易重命名类、引用和方法。我已不记得有多少次我认为一个名称是合适,而后来又决定修改。...使用标签来分割和管理代码非常重要,可以在代码快速导航。Xcode 11 在右侧有一个代码导航器,基于此可以更频繁地使用标记。 4....但作为开发人员,需要记住两点: 首先,不要让导航过于复杂,除非有简单方法可以返回主页可撤消操作,否则不要在模态上再展示模态,也不要在 UINavigationController 上 push 多个组件

    2.3K40

    iOS系统中导航栏转场解决方案与最佳实践

    在这张图里,我们可以将 UINavigationController 看做是 C,UINavigationBar 看做是 V,而 UIViewController 和 UINavigationItem...UINavigationController 通过驱动 Stack UIViewController 变化来实现 View 层级变化,也就是 UINavigationBar 改变。...这也就是为什么我们在代码里只要设置 self.navigationItem 相关属性就可以改变 UINavigationBar 样式。...很多时候,国内开发者会将 UINavigationBarUINavigationController 混在一起叫导航栏,这样做法不仅增加了开发者之间沟通成本,也容易导致误解。...值得注意地方有两点: 第一个是 UINavigationController 作为 UINavigationBar 代理,在没有特殊需求情况下,不应该修改其代理方法,这里是通过符号断点获取它们调用顺序

    2.4K30
    领券