Utilisons Swift Package Manager (SwiftPM) ~ Création ~

À propos de SwiftPackageManager (ci-après, SwiftPM), qui peut être utilisé pour le développement d'applications iOS à partir de Xcode 11 et est devenu considérablement plus facile à utiliser avec Xcode 12 publié l'autre jour, cet article ne explique pas comment le présenter au projet et comment créer votre propre bibliothèque dans SwiftPM Ce sera une méthode pour créer votre propre bibliothèque.

↓ Cliquez ici pour la méthode d'installation

Comment créer une bibliothèque

Environnement d'installation

Démarrer Swift PM

[Démarrer Xcode] → [Fichier] → [Nouveau] → [Paquets Swift]

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

[Nom du projet] → [Créer]

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

Écran créé Cette fois, c'est à l'enregistrement de ma propre bibliothèque, donc

Je n'y toucherai que. (Si c'est vrai, vous devez également écrire un test.)

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

Dans Package.swift, décrivez l'URL du fichier cible ou de la bibliothèque externe que vous souhaitez charger. Cette fois, chargez Nuke avec une bibliothèque externe, étendez UIImage et chargez Nuke du côté UIImage.

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)],   //Plateforme à utiliser (iOS 11 ou supérieur cette fois)
    products: [
        .library(
            name: "MyLibrary",
            targets: ["MyLibrary"]),
    ],
    dependencies: [
        .package(url: "https://github.com/kean/Nuke.git", from: "9.1.2")    //Bibliothèque externe que vous souhaitez charger


    ],
    targets: [
depends on.
        .target(
            name: "MyLibrary",
            dependencies: [
                .product(name: "Nuke", package: "Nuke")    //Utiliser la bibliothèque chargée
            ]),
        .testTarget(
            name: "MyLibraryTests",
            dependencies: ["MyLibrary"]),
    ]
)

Ceci termine le processus d'utilisation de la bibliothèque.

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

Je vais omettre le contenu de la bibliothèque. (J'ai essayé d'utiliser Extension comme celui qui charge et redimensionne les images de Nuke.)

En l'état, ** Aucun module de ce type'UIKit '** n'est affiché et il ne peut pas être construit.

[Tests] → [MyLibraryTests] → Changer le contenu de [MyLibraryTests.swift] スクリーンショット 2020-10-12 16.19.16.png

Remplacez la version de "Mon Mac" par "N'importe quel appareil iOS"

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

Si la construction réussit, vous avez terminé.

Utilisez la commande Git ou l'arborescence des sources pour valider le dernier créé, ajoutez une balise et envoyez-la sur github, et vous avez terminé. ↑ À propos de ça

Prière de se référer à.

Si vous pensez à une distribution mondiale, nous vous recommandons d'obtenir une licence. Comment obtenir une licence sur github

Prière de se référer à.

Au fait, celui créé cette fois est publié sur github. Si vous le souhaitez, veuillez l'utiliser avec Star.

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

↓ Cliquez ici pour la méthode d'introduction.

référence

La coopération

Comment enregistrer votre propre bibliothèque dans SwiftPM, vous ne pouvez pas comprendre uniquement comment introduire une bibliothèque externe uniquement par référence "** App Dojo Salon ** », les gens ont également coopéré. Merci beaucoup.

Recommended Posts

Utilisons Swift Package Manager (SwiftPM) ~ Création ~
Utilisons Swift Package Manager (SwiftPM) ~ Introduction ~
[Swift] Utilisons l'extension
[Swift] Utilisons le contrôle segmenté
Utilisons jcmd