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

UINavigationBar和新的iOS 5+外观API - 如何提供两个背景图像?

在iOS 5+中,您可以使用新的外观API来为UINavigationBar设置两个背景图像。以下是一种实现方法:

  1. 首先,确保您的项目支持iOS 5或更高版本。
  2. 在您的项目中,找到或创建一个名为“UINavigationBar+Background.m”的文件,并在其中添加以下代码:
代码语言:objective-c
复制
#import <objc/runtime.h>

@implementation UINavigationBar (Background)

- (void)drawRect:(CGRect)rect {
    UIImage *image = [UIImage imageNamed:@"navigationBar_background.png"];
    [image drawInRect:rect];
}

+ (void)load {
    Method originalMethod = class_getInstanceMethod(self, @selector(drawRect:));
    Method swizzledMethod = class_getInstanceMethod(self, @selector(swizzled_drawRect:));
    method_exchangeImplementations(originalMethod, swizzledMethod);
}

- (void)swizzled_drawRect:(CGRect)rect {
    [self swizzled_drawRect:rect];

    UIImage *image2 = [UIImage imageNamed:@"navigationBar_background2.png"];
    [image2 drawInRect:rect];
}

@end
  1. 在上述代码中,您需要将“navigationBar_background.png”和“navigationBar_background2.png”替换为您自己的图像文件名。
  2. 在您的项目中,导入“UINavigationBar+Background.h”头文件,并在需要设置两个背景图像的UINavigationBar上调用此方法。

通过这种方法,您可以为UINavigationBar设置两个背景图像。请注意,这种方法可能会导致App Store审核问题,因此请确保您的项目符合App Store的审核指南。

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

相关·内容

  • iOS15适配

    背景 按照往年新系统发布的时间规律,新的系统预计在9月20日左右发布,目前beta版本已经更新到beta6。...想必都看过WWDC2021的Session了,Session原版视频依然是最有效的get新特性的渠道,iOS15多的特性就不说了,我就整理了我在适配iOS15路上的一些更改和调整。...适配以iOS15 beta6和xcode13 beta5为环境基础 UINavigationBar 用新xcode13编译工程后,导航栏的问题比较明显,调试之后发现是UINavigationBar部分属性的设置在...是iOS13更新的API,应该有人已经在用,我们的应用兼容iOS10以上,对于导航栏的设置还没有使用UINavigationBarAppearance,如今在iOS15上失效,所以对于呈现的问题,做如下适配...首先是背景色设置失效,让我就想到了navigationbar的问题,所以没有查api了 直接用UITabBarAppearance来设置, 新代码 ...... if #available(iOS 15

    2.3K30

    iOS开发UINavigation系列一——导航栏UINavigtionBar

    iOS开发UINavigation系列一——导航栏UINavigtionBar 一、导航栏的使用         在iOS开发中,我们通常会使用导航控制器,导航控制器中封装了一个UINavigationBar...我们也可以设置导航栏的风格属性,从iOS6之后,UINavigationBar默认为半透明的样式,从上面也可以看出,白色的导航栏下面透出些许背景的红色。...三、导航栏常用属性和方法         从上面我们可以看到,iOS6后导航栏默认都是半透明的,我们可以通过下面的bool值来设置这个属性,设置为NO,则导航栏不透明,默认为YES: @property...UI_APPEARANCE_SELECTOR; - (nullable UIImage *)backgroundImageForBarMetrics:(UIBarMetrics)barMetrics; 上面两个方法用于设置和获取导航栏的背景图案...与pop操作         UINavigationBar上面不只是简单的显示标题,它也将标题进行了堆栈的管理,每一个标题抽象为的对象在iOS系统中是UINavigationItem对象,我们可以通过

    1.2K31

    UI篇-UINavigationController之易忘补充

    设置导航栏的背景图片 (多见于导航背景颜色是渐变颜色,使用一张图片)但是这张图片设置好以后,所有的控件的Y坐标都会下移64,也就是说,这张图片会占用屏幕的64pt 高度的屏幕,而且无法被普通试图覆盖使用...UINavigationItem属于MVC中的M,封装了要显示在UiNavigationBar上的数据,定义了UINavigationItem上按钮的触发事件,外观等 -initWithBarButtonSystemItem...提供push和pop操作item....viewController的toolbarItems来设置,显示的顺序和设置的NSArray中存放的顺序一致,其中每一个数据都一个`UIBarButtonItem`对象,可以使用系统提供的很多常用风格的对象...因此UINavigationController的这两个属性通常情况下是一样,但也有可能不同。

    2.2K20

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

    translucent 属性值为 NO 的前提下,更改导航栏的背景色。 对于第一种情况,我们需要调用 UINavigationBar 的 setBackgroundColor: 方法。...这里只说一下 contentInsetAdjustmentBehavior 和 additionalSafeAreaInsets 两个 API。...backIndicator 上的动画 苹果提供了许多修改导航栏组件样式的 API,有关于布局的,有关于样式的,也有关于动画的。...backIndicatorImage 和 backIndicatorTransitionMaskImage 就是其中的两个 API。...而在开发期施加约束,则意味着我们要提供一套完整的解决方案让各个业务方遵守。 这一节我们会以美团内部的解决方案为例,讲解如何实现一个流畅的导航栏跳转过程和相关使用方法。

    2.4K30

    iOS 9人机界面指南(一)下篇:UI设计基础 - 腾讯ISUX

    优秀的应用应该通过创建独特的外观和感觉来为用户提供愉悦、难忘的体验。 在iOS系统之下可以很容易地使用自定义的图标、颜色和字体来创建区别于其他应用的UI。...注意颜色的盲区。多数色盲的人很难区分红色与绿色。需要对你的应用进行测试以确保在其中你没有将红色与绿色作为区分两个不同状态或值的唯一方式,一些图像编辑软件或工具能够有效的帮你验证颜色的盲区。...如果你只是想改变标准UI元素的外观,可以考虑使用UIKit外观定制API(UIKit appearance customization APIs),或者给元素填充别的颜色。...提示:Interface Builder让获取标准UI元素,使用外观定制API(the appearance customization APIs),获取属性,以及在你的应用里使用自定义和系统自带图标变得很简单...这意味着在绝大多数情况下,将系统提供的技术整合到你的应用中,往往比自定义一种新的技术更为可靠。

    1.8K21

    DarkMode(1):产品应用深色模式分析

    iOS 13 的发推出了深色模式(Dark Mode),不仅可以大幅减少电量的消耗,减弱强光对比,还能提供更好的可视性和沉浸感。  ...Web 标准制定组织 W3C 在其 Web 内容无障碍指南(WCAG)中建议 对比一般的文本,其对比率应该不小于 4.5:1, 对于图像和界面元素来说,对比率应该不小于 3:1 要如何计算色彩对比率呢?...iOS 深色外观的背景色,是纯正的黑色(#000000),苹果称之为基底色(Base)。不过,这个背景色会随着界面层级的变化,而变成提亮色(Elevated)。...以上四点,就是苹果如何为 iOS 设计 Dark Mode 的。...例如,iOS 的 Dark Mode 针对图像不会进行特别的处理,如果你的备忘录中有一张白色的照片,就会变得十分刺眼。

    1.8K20

    《iOS Human Interface Guidelines》——Template Icons模板图标

    模板图标 你为栏或者主屏幕快捷操作创建的自定义图标也称为模板图标或者图像,因为iOS将其用于产生当你app运行时你看到的图标。 iOS定义了很多标准的小图标,比如刷新、动作、添加和喜欢。...太多的细节会让图标显得草率或者难以辨认。 不会很容易被误认为系统提供的图标之一。用户应该能够一眼区分你的自定义图标和标准图标。 易于理解并且广泛接受。...比如说,看一看iOS栏图标系列,注意它们在尺寸、细节和分量上是如何相似来产生一种和谐统一的感觉的。 为了创建连贯的系列图标,一致性是关键:每个图标都应该尽可能地使用相同的透视和笔画粗细。...如果你设计一个自定义的标签栏图标,你应该提供两个版本——一个未选中的外观和一个选中后的外观。选中后的外观往往是未选中外观的填充版本,但是一些设计需要改变这一方式。...当这种情况时——比如音乐和艺术家图标——你可以为图标的两个版本都使用填充外观。对用户来说区分选中和未选中的外观很容易,因为选中的外观颜色深并且有配色。

    63020

    iOS开发UINavigation系列三——工具栏UIToolBar

    iOS开发UINavigation系列三——工具栏UIToolBar         iOS中除了UINavinationBar之外,还有工具栏UIToolBar可以供我们使用,工具栏和导航栏十分类似,...只是功能更加简单,工具栏中也有UIBarButtonItem按钮,在前两篇博客中,对导航栏和导航项都进行的讨论,地址如下: UINavigationBar:http://my.oschina.net/u...,与之相对,工具栏一般会出现在视图的的底部,上面可以填充一些按钮,提供给用户一些操作。...下面是UIToolBar中的一些方法,其中大部分在UINavigationBar中都有涉及,这里只做简单的介绍: //工具栏的风格,和导航栏类似,有黑白两种 @property(nonatomic) UIBarStyle...@property(nullable, nonatomic,strong) UIColor *barTintColor; //设置工具栏背景和阴影图案 - (void)setBackgroundImage

    56710

    iOS 9人机界面指南(四):UI元素(上) - 腾讯ISUX

    想要了解更多关于如何在代码中定义一个导航栏的信息,请参阅Navigation Controllers, UINavigationController Class Reference和 UINavigationBar...举个例子,不要在同一个应用中使用不透明导航栏和半透明工具栏。在屏幕处于同一方向时,最好不要改变不同屏上导航栏的背景图片、颜色和透明度。 确保你自定义的返回按钮的外观与操作仍然像一个返回按钮。...API注释 想要了解如何在代码中定义集合视图,请参考Collection View Programming Guide for iOS....API注释 想要了解如何在代码中定义图片视图,请参考UIImageView. 图片视图: 不存在任何预先定义好的外观,同时在默认状态下它不支持用户的交互行为。...下图是iOS模拟器中的翻页样式: ? API注释 想要了解如何在代码中定义图片视图,请参考Page View Controllers. 页面视图控制器: 带滚动条的页面视图控制器没有默认的外观。

    10.1K51

    iOS开发知识点

    iOS开发知识点 今天整理项目,为项目添加注释,发现有些东西需要保存一下,将来好使用。...设置navBar的背景,去掉黑线,试了好长时间,查了好多,这个对我适用 设置navBar上item的颜色,以及nav Title的颜色和字体大小 替换系统返回按钮的图片,设计说自带的太丑,一开始是自定义返回的...View,后来发现不用那么麻烦,直接有方法可以替换 // 设置navBar背景,这样设置可去掉那个黑线 [[UINavigationBar appearance] setBackgroundImage:...,及title字体大小和颜色 [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]]; [[UINavigationBar appearance..., 必须两个方法一起才有用 [[UINavigationBar appearance] setBackIndicatorImage:[UIImage imageNamed:@"icon_white"]]

    17650

    iOS之深入解析Xcode 13正式版发布的40个新特性

    二十、签名和分发 xcodebuild 现在支持使用 App Store Connect API 密钥对 Apple Developer 网站进行身份验证; Xcode 现在提供在您第一次将新应用上传到...二十七、测试 Source Editor 和 Test Navigator 具有 Run Test 操作的两个新变体,它们无需构建即可运行测试选择; 现在可以使用 XCTPerformanceMeasurementPolarity...枚举自定义如何将性能测试的自定义指标的测量值与设置的基线进行比较; XCTest 现在能够在受支持的 iOS 设备上的 UI 测试中合成指针交互; Xcode 现在为在运行测试时崩溃的进程收集代码覆盖率数据...提供用于图像分类、声音分类、文本分类以及手部姿势和手部动作分类的以任务为中心的 API,以及用于经典表格分类和回归的 API。...SortDescriptor、KeyPathComparator 和 SortComparator API 提供了一个 Swift 接口来表达可归档的值排序规则。

    8.8K40

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

    引 如我在传送门:iOS导航栏切换界面时隐藏和显示中所说,现在很多App的个人中心模块都是不保留导航栏的,会直接使导航栏透明,比如做的很好的QQ个人信息界面: 为什么说QQ做的很好呢?...而很多App的做法其实比较粗糙,类似于我在传送门:iOS导航栏切换界面时隐藏和显示中的做法,需要导航栏透明时,直接将导航栏隐藏起来。...,标题、返回按钮啥的都方便加,这也就是说不隐藏导航栏,而是要单独让导航栏背景透明; 2、在导航栏透明与否的界面间切换时透明度有渐变效果; 3、在UINavigationController体系和UITabarController...设置导航栏背景透明度 导航栏上应该是有很多view的,我们要做的是只让背景透明,而保留标题、返回按钮。iOS没有直接给我们提供对于导航栏背景view的访问途径,那么我们只能自己来找了。...了,序号和缩进表示了其层级归属关系,打印的方法可以看这篇文章:传送门:iOS遍历打印所有子视图 从这些子view的类名能够大概猜出他们都是导航栏上的什么,让我们大胆猜测一下,_UIBarBackground

    3.1K40

    HBuilder的基本介绍

    其他原生API – Native.js 原生API在iOS和Android上各自有40多万,有些API并不常用,而且不具有跨平台特性,比如ios的game center api。...以及我们也支持5+ SDK,把5+ runtime作为一个SDK放入到其他原生App中,用5+ SDK替代webview可以得到更强大的功能和性能。...5+ Runtime还支持预载技术,以加快页面的加载速度,减少白屏和用户等待。事实上原生语言都可以自己开发预载,但HTML5标准API不足以完成此任务,我们提供单独的preload API。...体积高达500k;2. data-的写法虽然写起来简单,但在运行时需要js去解析HTML5标签并替换为新的dom结构,这是非常消耗手机资源和影响加载速度的;3....总结 通过HBuilder、5+ Runtime、mui,我们很好的解决了HTML5的性工能障碍,做到了与原生App一致的功能和体验,给开发者提供了更多便利。

    13.2K110

    iOS开发UINavigation系列四——导航控制器UINavigationController

    iOS开发UINavigation系列四——导航控制器UINavigationController 一、引言         在前面的博客中,我么你介绍了UINavigationBar,UINavigationItem...和UIToolBar,UINavigationController是将这些控件和UIViewController紧密的结合了起来,使用导航,我们的应用程序层次会更加分明,对controller的管理也更加方便... *interactivePopGestureRecognizer; 四、iOS8后导航的新特性 //这个方法是为了iOS方法的命名统一,在导航中,其作用和push一样 - (void)showViewController...五、UINavigationDelegate         导航控制器还提供了一些代理回调方法,如下: //视图将要展示时调用的方法 - (void)navigationController:(UINavigationController...:(UINavigationController *)navigationController NS_AVAILABLE_IOS(7_0); //下面两个方法可以对导航的转场动画进行设置 - (nullable

    1.8K20

    最新iOS设计规范七|10大视觉规范(Visual Design)

    根据各种环境变量,实际颜色值可能在不同的释放之间波动。始终使用API应用系统颜色。 ? iOS 13还引入了一系列六种不透明的灰色颜色,你可以在半透明效果不佳的极少数情况下使用它们。...动态系统颜色 除了以上系统颜色外,iOS还提供用于传达其目的而非其外观或颜色值的语义定义颜色。例如用于用于背景区域和前景内容的颜色,标签、分隔符和填充。...使用自定义的背景色会使人们更难于感知这些系统提供的视觉区别。 使用适合当前外观模式的颜色。语义颜色(如分隔符)会自动适应当前外观。...图像、图标和符号的颜色 iOS系统的SF符号,在深色模式下会自动显示效果,以及针对明暗外观优化的全彩色图像。 尽量使用SF符号。...系统定义的材料和活力 iOS定义了你在特定位置可以使用的材质,以控制前景内容和背景外观之间的视觉分离。系统提供的材质包括适用于大多数背景的浅色和深色变体。

    8.1K30
    领券