Verwenden wir den Swift Package Manager (SwiftPM) ~ Creation ~

Informationen zu SwiftPackageManager (im Folgenden: SwiftPM), das für die Entwicklung von iOS-Anwendungen aus Xcode 11 verwendet werden kann und mit Xcode 12, das neulich veröffentlicht wurde, erheblich einfacher geworden ist. In diesem Artikel wird erläutert, wie Sie es in das Projekt einführen und eine eigene Bibliothek für SwiftPM erstellen. Es wird eine Methode zum Erstellen Ihrer eigenen Bibliothek sein.

↓ Klicken Sie hier für die Installationsmethode

So erstellen Sie eine Bibliothek

Installationsumgebung

Starten Sie Swift PM

[Xcode starten] → [Datei] → [Neu] → [Schnelle Pakete]

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

[Projektname] → [Erstellen]

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

Bildschirm erstellt Diesmal liegt es also an der Registrierung meiner eigenen Bibliothek

Ich werde es nur berühren. (Wenn ja, sollten Sie auch einen Test schreiben.)

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

Beschreiben Sie in Package.swift die URL der Zieldatei oder externen Bibliothek, die Sie laden möchten. Laden Sie dieses Mal Nuke mit einer externen Bibliothek, erweitern Sie UIImage und laden Sie Nuke auf der UIImage-Seite.

Package.swift


// 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)],   //Zu verwendende Plattform (iOS 11 oder höher dieses Mal)
    products: [
        .library(
            name: "MyLibrary",
            targets: ["MyLibrary"]),
    ],
    dependencies: [
        .package(url: "https://github.com/kean/Nuke.git", from: "9.1.2")    //Externe Bibliothek, die Sie laden möchten


    ],
    targets: [
depends on.
        .target(
            name: "MyLibrary",
            dependencies: [
                .product(name: "Nuke", package: "Nuke")    //Verwenden Sie die geladene Bibliothek
            ]),
        .testTarget(
            name: "MyLibraryTests",
            dependencies: ["MyLibrary"]),
    ]
)

Damit ist die Verwendung der Bibliothek abgeschlossen.

MyLibrary.swift


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)
    }
}

Ich werde den Inhalt in der Bibliothek weglassen. (Ich habe versucht, die Erweiterung als die zu verwenden, die Nukes Bild lädt und seine Größe ändert.)

So wie es ist, ** wird kein solches Modul 'UIKit' ** angezeigt und es kann nicht erstellt werden.

[Tests] → [MyLibraryTests] → Ändern Sie den Inhalt von [MyLibraryTests.swift] スクリーンショット 2020-10-12 16.19.16.png

Ändern Sie den Build von "Mein Mac" in "Beliebiges iOS-Gerät".

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

Wenn der Build erfolgreich ist, sind Sie fertig.

Verwenden Sie den Git-Befehl oder den Quellbaum, um den zuletzt erstellten festzuschreiben, ein Tag hinzuzufügen und es an github zu senden, und fertig. ↑ Darüber

Bitte beziehen Sie sich auf.

Wenn Sie an eine globale Distribution denken können, empfehlen wir Ihnen, eine Lizenz zu erwerben. So erhalten Sie eine Lizenz für Github

Bitte beziehen Sie sich auf.

Übrigens wird der diesmal erstellte auf github veröffentlicht. Wenn Sie möchten, verwenden Sie es bitte mit Star.

github https://github.com/isamiodagiri/ExtendedImageViewWithNuke

↓ Klicken Sie hier für die Einführungsmethode.

Referenz

Zusammenarbeit

Wie Sie Ihre eigene Bibliothek in SwiftPM registrieren, können Sie nicht nur verstehen, wie Sie eine externe Bibliothek nur als Referenz einführen. "** App Dojo Salon ** ”Menschen kooperierten auch. Vielen Dank.

Recommended Posts

Verwenden wir den Swift Package Manager (SwiftPM) ~ Creation ~
Verwenden wir den Swift Package Manager (SwiftPM) ~ Einführung ~
[Swift] Verwenden wir die Erweiterung
[Swift] Verwenden wir die segmentierte Steuerung
Verwenden wir jcmd