首页
学习
活动
专区
工具
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。...想必都看过WWDC2021Session了,Session原版视频依然是最有效get特性渠道,iOS15多特性就不说了,我就整理了我在适配iOS15路上一些更改调整。...适配以iOS15 beta6xcode13 beta5为环境基础 UINavigationBarxcode13编译工程后,导航栏问题比较明显,调试之后发现是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对象,我们可以通过

1K31

UI篇-UINavigationController之易忘补充

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

2.1K20

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栏图标系列,注意它们在尺寸、细节分量上是如何相似来产生一种和谐统一感觉。 为了创建连贯系列图标,一致性是关键:每个图标都应该尽可能地使用相同透视笔画粗细。...如果你设计一个自定义标签栏图标,你应该提供两个版本——一个未选中外观一个选中后外观。选中后外观往往是未选中外观填充版本,但是一些设计需要改变这一方式。...当这种情况时——比如音乐和艺术家图标——你可以为图标的两个版本都使用填充外观。对用户来说区分选中和未选中外观很容易,因为选中外观颜色深并且有配色。

61520

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

55810

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"]]

16650

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.7K40

HBuilder基本介绍

其他原生API – Native.js 原生APIiOSAndroid上各自有40多万,有些API并不常用,而且不具有跨平台特性,比如iosgame 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.1K110

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

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

3K40

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定义了你在特定位置可以使用材质,以控制前景内容背景外观之间视觉分离。系统提供材质包括适用于大多数背景浅色深色变体。

8K30
领券