DeclarativeUIKit 3.2.0

DeclarativeUIKit 3.2.0

sakiyamaK 维护。



  • Kei Sakiyama

DeclarativeUIKit

Swift Platforms Swift Package Manager Twitter

UIKit Autolayout 的声明式表述库

声明式地编写 UIKit Autolayout 的库。

self.declarative {
  UIScrollView.vertical {
    UIStackView.vertical {
      UIView()
      UIButton()
      UILabel()
    }
  }
}

安装

Swift 包管理器

一旦您已经设置了 Swift 包,添加 DeclarativeUIKit 作为依赖项就像将其添加到 Package.swift 的 dependencies 值一样简单。

dependencies: [
    .package(url: "https://github.com/sakiyamaK/DeclarativeUIKit", .upToNextMajor(from: "0.2"))
]

要使用 Xcode 安装 DeclarativeUIKit 包

转到文件 -> Swift 包 -> 添加包依赖... 然后搜索 https://github.com/sakiyamaK/DeclarativeUIKit 并选择您想要的版本

CocoaPods

CocoaPods 是 Cocoa 项目的依赖项管理器。有关使用和安装说明,请访问他们的网站。要使用 CocoaPods 将 DeclarativeUIKit 集成到您的 Xcode 项目中,请将其指定在您的 Podfile

pod 'DeclarativeUIKit'

文档

English

Japanese

快速入门

import UIKit
import DeclarativeUIKit

final class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        self.view.backgroundColor = .white

        self.declarative {            
            UIScrollView.vertical {
                UIStackView.vertical {

                    UIView()
                      .apply { view in
                          print("命令的に記述も可能")
                          view.tintColor = .black
                          view.isUserInteractionEnabled = true
                      }
                      .size(width: 100, height: 100)
                      .backgroundColor(.red)
                      .transform(.init(rotationAngle: 45.0 / 360 * Double.pi))
                      .cornerRadius(30, maskedCorners: [.layerMinXMinYCorner, .layerMaxXMaxYCorner])
                      .border(color: .blue, width: 10)
                      .customSpacing(40)

                    UIButton()
                        .title("button", for: .normal)
                        .titleColor(.brown, for: .normal)
                        .add(target: self, for: .touchUpInside, { _ in
                            print("タッチアクション")
                        })

                    Array(1 ... 10).compactMap { num in
                        UILabel("\(num)番目のlabel")
                            .textColor(.black)
                            .textAlignment(.center)
                    }

                    UIView.spacer()
                }
                .spacing(20)
            }
        }
    }
}

Xcode 预览

使用 Xcode 预览可以不进行构建就能检查布局

Xcode 预览让您能够不必构建就检查布局

import SwiftUI

struct DeclarativeViewController_Wrapper: UIViewControllerRepresentable {
    typealias ViewController = DeclarativeViewController

    func makeUIViewController(context: Context) -> ViewController {
        let vc = ViewController()
        return vc
    }
    
    func updateUIViewController(_ vc: ViewController, context: Context) {
    }
}

struct DeclarativeViewController_Previews: PreviewProvider {
    static var previews: some View {
        Group {
            DeclarativeViewController_Wrapper()
        }
    }
}

其他示例