让我们使用Swift Package Manager(SwiftPM)?创建?


关于SwiftPackageManager(以下称为SwiftPM),它可以用于从Xcode11进行iOS应用程序开发,并且在前一天发布的Xcode12中非常容易使用,包括将其介绍到项目中的方法以及创建项目的方法。自制的SwiftPM库本文是如何创建自己的库。

↓单击此处获取安装方法
*让我们使用Swift包管理器(SwiftPM)?简介?

库创建方法

安装环境

  • Xcode12

启动Swift PM

[开始Xcode]→[文件]→[新建]→[快速包]

スクリーンショット 2020-10-12 9.35.17.png

[项目名称]→[创建]

スクリーンショット 2020-10-12 9.36.05.png

创建的屏幕
这次取决于我自己的图书馆的注册,所以

  • Package.swift
  • MyLibrary.swift

我只触摸

。 (如果为true,则还应该编写一个测试。)

スクリーンショット 2020-10-12 9.36.37.png

Package.swift中,描述您要加载的目标文件或外部库的URL。
这次,使用外部库加载Nuke,扩展UIImage,然后在UIImage端加载Nuke。

Package.swift

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// swift-tools-version:5.3
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "MyLibrary",
    platforms:[.iOS(.v11)],   // 使用するプラットフォーム(今回はiOS11以上)
    products: [
        .library(
            name: "MyLibrary",
            targets: ["MyLibrary"]),
    ],
    dependencies: [
        .package(url: "https://github.com/kean/Nuke.git", from: "9.1.2")    // 読み込みたい外部ライブラリ


    ],
    targets: [
depends on.
        .target(
            name: "MyLibrary",
            dependencies: [
                .product(name: "Nuke", package: "Nuke")    // 読み込んだライブラリを使用する
            ]),
        .testTarget(
            name: "MyLibraryTests",
            dependencies: ["MyLibrary"]),
    ]
)

这样就完成了库。

MyLibrary.swift

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import UIKit
import Nuke

public enum ProcessorsOption {
    case resize
    case resizeRound(radius: CGFloat)
    case resizeCircle
}

public typealias AspectMode = ImageProcessors.Resize.ContentMode

public extension UIImageView {

    func loadUrl(imageUrl: String?,
                 processorOption: ProcessorsOption = ProcessorsOption.resize,
                 aspectMode: AspectMode = .aspectFill,
                 crop: Bool = false,
                 placeHolder: UIImage? = nil,
                 failureImage: UIImage? = nil,
                 contentMode: UIView.ContentMode? = nil) {
        guard let url: String = imageUrl,
            let loadUrl: URL = URL(string: url) else {
            self.image = failureImage
            return
        }

        let resizeProcessor = ImageProcessors.Resize(size: self.bounds.size,
                                                     contentMode: aspectMode, crop: crop)
        let processors: [ImageProcessing]

        switch processorOption {
        case .resize:
            processors = [resizeProcessor]
        case .resizeRound(let radius):
            processors = [resizeProcessor, ImageProcessors.RoundedCorners(radius: radius)]
        case .resizeCircle:
            processors = [resizeProcessor, ImageProcessors.Circle()]
        }

        let request = ImageRequest(
            url: loadUrl,
            processors: processors
        )
        var contentModes: ImageLoadingOptions.ContentModes?

        if let mode = contentMode {
            contentModes = ImageLoadingOptions.ContentModes.init(success: mode,
                                                                 failure: mode, placeholder: mode)
        }
        let loadingOptions = ImageLoadingOptions(placeholder: placeHolder,
                                                 failureImage: failureImage, contentModes: contentModes)

        Nuke.loadImage(with: request, options: loadingOptions, into: self)
    }
}

我将省略库中的内容。
(我尝试使用扩展程序作为加载和调整Nuke图像大小的扩展程序。)

照原样,没有显示此类模块'UIKit',因此无法构建。

[测试]→[MyLibraryTests]→更改[MyLibraryTests.swift]的内容
スクリーンショット 2020-10-12 16.19.16.png

将构建从"我的Mac"更改为"任何iOS设备"

スクリーンショット 2020-10-12 16.20.09.png

如果构建成功,则完成。

使用Git命令或源代码树来提交最后一个创建的代码,添加一个Tag,然后将其推送到github,就可以了。
↑关于此,

  • https://tyoshikawa1106.hatenablog.com/entry/2016/05/16/230237
  • https://backlog.com/ja/git-tutorial/stepup/17/

参见


*如果标记未设置为[1.0.0],将发生错误。

如果您可以考虑整个发行版,建议您对其进行许可。
如何在github

上许可

  • https://qiita.com/shibukk/items/67ad0a5eda5a94e5c032

请参考

顺便说一下,这次创建的那个发布在github上。
如果愿意,请与Star一起使用。

github

https://github.com/isamiodagiri/ExtendedImageViewWithNuke

↓单击此处获取安装方法。

  • 让我们使用Swift Package Manager(SwiftPM)?简介?

参考

  • https://qiita.com/am10/items/72dbc511efc512fc065a

合作

如何在SwiftPM中注册自己的库,我不明白如何仅通过引用来安装外部库,我要求" App Dojo Salon"的人们进行合作。
非常感谢你。