IconSelector

IconSelector

一个即插即用的UI组件,允许在iOS上轻松选择备用图标。

为什么?

向iOS应用添加备用图标并非完全直接,但它应该是。将条目添加到Info.plist已经够麻烦了,更不用说实现可以在iPhone和iPad上显示的UI。这个库解决了最后一部分,让你更容易地选择你想添加的图标!

特性

IconSelector in Slopes IconSelector in GIFwrapped

安装

Swift Package Manager (仅适用于Apple平台)

在Xcode中,选择File > Swift Packages > Add Package Dependency 并输入仓库URL

https://github.com/jellybeansoup/ios-icon-selector

Carthage

将以下行添加到您的Cartfile

github "jellybeansoup/ios-icon-selector"

开始使用

首先,在您的应用程序的Info.plist文件中,在CFBundleIcons键下定义您的备用图标。 不要忘记包含您应用程序主图标的条目!

<key>CFBundleIcons</key>
<dict>
	<key>CFBundleAlternateIcons</key>
	<dict>
		<key>blue</key>
		<dict>
			<key>CFBundleIconFiles</key>
			<array>
				<string>blue-20</string>
				<!-- Include all the relevant sizes! -->
			</array>
		</dict>
	</dict>
	<key>CFBundlePrimaryIcon</key>
	<dict>
		<key>CFBundleIconFiles</key>
		<array>
			<string>green-83.5</string>
			<!-- Include all the relevant sizes! -->
		</array>
	</dict>
</dict>

接下来,实例化IconSelector并将其添加到您的视图层次结构中。 IconSelector类继承自UIControl,因此您还需要添加一个目标/动作对,以便在用户选择不同的图标时收到通知。

// Goes at the top of the file.
import IconSelector

// Retrieve all the icons defined in your app's main bundle.
let icons = Icon.main

// Instantiate the IconSelector with a target/action combo, and add it to your view hierarchy.
let iconSelector = IconSelector(icons: icons)
iconSelector.addTarget(self, action: #selector(iconSelectorDidChange(_:)), for: .valueChanged)
view.addSubview(iconSelector)

最后,实现更改应用程序图标以响应用户选择所需的操作。

@objc func iconSelectorDidChange(_ iconSelector: IconSelector) {
	guard UIApplication.shared.supportsAlternateIcons, let selectedIcon = iconSelector.selectedIcon else {
		return
	}

	UIApplication.shared.setAlternateIcon(selectedIcon, completionHandler: nil)
}

文档

您可以在此处找到此项目的完整文档。 此文档由jazzyGitHub Action自动生成,并由GitHub Pages托管。

要在本地生成文档,请从仓库的根目录运行make documentationsh ./scripts/documentation.sh。 输出将在docs文件夹中生成,并且不应包含在提交中(因为在线文档是自动生成和更新的)。

根据BSD许可证发布

版权所有© 2021 Daniel Farrelly & Curtis Herbert

如果满足以下条件,则允许以源代码和二进制形式重新分发和使用,无论是否经过修改:

本软件由版权所有者和贡献者“按原样”提供,并且不提供任何明示或暗示的保证,包括但不限于对适销性和特定用途适用性的暗示保证。 在任何情况下,版权所有者或贡献者均不对任何直接、间接、偶然、特殊、惩戒性或后果性损害(包括但不限于采购替代商品或服务; 损失使用、数据或利润; 或业务中断)负责,无论是由于合同、严格责任或侵权(包括疏忽或其他)引起的,以任何方式使用本软件造成的,即使已被告知可能发生此类损害。