1. 首页
  2. Foxit PDF SDK(iOS版)
  3. 如何通过源代码自定义 UI 实现

如何通过源代码自定义 UI 实现

如果您不想使用当前现成的UI框架,您可以通过修改UI Extensions组件中的源代码来重新设计UI。有一点需要注意, UI Extensions 组件的源代码是用Objective-C编写的,因此,您需要使用Objective-C来修改UI布局。如果您是Swift开发人员并且对Objective-C不太熟悉,那么您可能只能自定义那些不需要编写代码的UI外观,比如图标和其他UI资源等。

为了自定义UI实现,您可以按照下面的步骤:

首先,在您的工程中添加如下的文件,

  • FoxitRDK.framework – 该framework包含Foxit PDF SDK for iOS的动态库和相关头文件。该framework在“libs” 文件夹下。
  • uiextensions工程 – 是一个开源库,包含了一些即用型的UI模块实现和应用程序基本的UI设计,可以帮助开发人员快速将功能齐全的PDF阅读器嵌入到他们的iOS应用中。当然,开发人员也不是必须要使用默认的UI,可以通过“uiextensions”工程为特定的应用灵活自定义和设计UI。该工程在 “libs/uiextensions_src” 文件夹下。

技巧:内置UI的自定义可以直接在uiextensions工程中完成,然后编辑该工程,将生成的uiextensionsDynamic.framework添加到您的应用程序,这样就不用将整个uiextensions项目添加到您的应用程序中。

其次,在uiextensions工程中定位到您需要自定义的UI的相关代码或者图片,然后根据您的需求进行修改。

为方便起见,我们将在“sample”文件夹下的“viewer_ctrl_demo” 中向您展示如何自定义UI实现。

UI自定义示例

步骤1:向 “viewer_ctrl_demo” 中添加uiextensions工程。

备注:为了方便查看自定义修改结果,我们将添加uiextensions工程到demo中。该demo已经包含了FoxitRDK.framework,因此,只需要添加uiextensions工程。

在Xcode中打开”viewer_ctrl_demo” 工程。将下载解压包中”libs/uiextensions_src”下的”uiextensions.xcodeproj“拖拽到”viewer_ctrl_demo” 工程中,如Figure 4-6所示。

Figure 4-6

然后会弹出一个对话框提示您是否保存该工程到一个新的workspace,如Figure 4-7所示。点击Save。

Figure 4-7

保存新的workspace到”samples” 文件夹,并且命名为”custom_viewer”,如Figure 4-8所示。点击Save。

Figure 4-8

则,新的workspace将如Figure 4-9所示。

Figure 4-9

恭喜您!您已经完成了第一步。

步骤2:查找和修改与您需要自定义的UI相关的布局文件。定位到您需要自定义的UI的相关代码或者图片,然后根据需求进行修改。

现在,我们将向您展示一个简单的示例,在搜索面板中修改button的图标,如Figure 4-10所示。

技巧:如果您只需要更改UI元素的图标,可以直接使用uiextensionsDynamic.framework,而不需要导入uiextensions工程源代码。但同样的是,您都需要找到图标的名称。

Figure 4-10

要替换图标,我们只需要找到存储该button图标的位置,然后使用另一个具有相同名称的图标来替换它。

备注:Foxit PDF SDK for iOS为不同的设备提供了三组图标,以确保您的应用程序可以在不同设备上顺畅运行。以下说明了带有不同后缀的图片所适用的设备:

  • Image.png: 用于非Retina显示屏的旧设备 (比如,iPad 2)。
  • Image@2x.png: 用于 iPhone 4/4s/5/5s/6/6s/7/7s/8/11。
  • Image@3x.png: 用于 iPhone 6/6s/7/7s/8/11 Plus、iPhone X等具有高分辨率的设备。

本节使用iPhone 8模拟器来运行该demo。在uiextensions 工程中,点击 “uiextensionsDynamic -> Resource -> png -> Search.xcassets“,如Figure 4-11所示。很容易找到我们需要替换的图片。资源文件是根据功能来存储的,因此您可以通过图标的名称找到相关的代码。

Figure 4-11

现在,只需要在”libs\uiextensions_src\UIExtensions\Resource\png\Search.xcassets\search_showlist.imageset” 文件夹下,用您自己的图标替换”search_showlist@2x.png”即可。例如,使用顶部的搜索按钮 (search@2x.png) 来替换它。

替换完成后,首先编译和运行uiextensionsDynamic_aggregate 工程,如Figure 4-12所示。

Figure 4-12

备注:uiextensions 工程可以通过编译uiextensions_aggregate 生成通用的 “.a” 库,也可以通过编译uiextensionsDynamic_aggregate生成通用的framework,可用于模拟器或者iOS真机设备。在本节中,我们编译uiextensionsDynamic_aggregate。uiextension 工程中用于生成通用framework的脚本如Figure 4-12所示。

当成功编译uiextensionsDynamic_aggregate工程后,下载解压包”libs”文件夹下的uiextensionsDynamic.framework将会被新生成的framework覆盖。

然后,编译和运行”viewer_ctrl_demo” 工程。成功编译后,使用搜索功能,可以看到底部的搜索按钮的图标已更改,如Figure 4-13所示。

Figure 4-13

这只是一个简单的示例用来展示如何自定义UI实现。您可以作为参考,通过uiextensions工程您可以自由的对特定的应用程序进行UI自定义和设计。

 

更新于 2020年3月24日

这篇文章有用吗?

相关文章