UIBaseKit 0.1.1

UIBaseKit 0.1.1

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布日期最后发布2017年12月
SwiftSwift版本4.0
SPM支持SPM

Maintained by EasyMakePhotoPicker.



UIBaseKit 0.1.1

  • 作者:
  • audrl1010

UIBaseKit

Swift
Version
License
Platform

🤔到目前为止,在编写视图代码时,我们编写了配置代码、约束代码和层次代码的组合,这导致了源代码理解困难。因此,我创建了一个库,可以帮助您将配置代码、约束代码和层次代码分开,使之更加整洁。

使用方法

快速入门

在继承自BaseViewController后,覆盖并实现setupViewssetupConstraints方法。

import UIKit
import UIBaseKit

class SignUpViewController: BaseViewController {
  // MARK: - UI
  var usernameLabel: UILabel = {
    $0.textColor = .black
    $0.textAlignment = .right
    $0.font = .boldSystemFont(ofSize: 16.0)
    $0.text = "Username"
    return $0
  }(UILabel())

  ...

  var emailLabel: UILabel = {
    $0.textColor = .black
    $0.textAlignment = .right
    $0.font = .boldSystemFont(ofSize: 16.0)
    $0.text = "Email"
    return $0
  }(UILabel())

  ...

  /// After configure propertys for each view,
  /// return an array of views to add to the superview in desired order.
  override func setupViews() -> [CanBeSubview]? {
    // 1) configure views
    view.backgroundColor = .white
    registerKeyboardObservers()
    signUpButton.addTarget(self, action: #selector(signUpButtonDidTouch), for: .touchUpInside)

    ...

    // 2) return subviews
    /** 😍 viewController`s view hierarchy
      → keyboardAvoidView
         → containerView
             → usernameLabel
             → usernameTextField
             → emailLabel
             → emailTextField
             → passwordLabel
             → passwordTextField
      → signUpButton
    */
    let hierarchy = [
      keyboardAvoidView.addSubviews(
        containerView.addSubviews(
          usernameLabel,
          usernameTextField,
          emailLabel,
          emailTextField,
          passwordLabel,
          passwordTextField
        )
      ),
      signUpButton
    ]
    return hierarchy
  }

  /// Configure the constraints for each view.
  override func setupConstraints() {
    // 3) set constraints for each view added to superview.
    // 🤓Note: I set constraints for each view using my favorite `FluidAnchor` library.
    // https://github.com/audrl1010/FluidAnchor

    keyboardAvoidView.flu
      .leftAnchor(equalTo: view.leftAnchor)
      .topAnchor(equalTo: view.topAnchor)
      .rightAnchor(equalTo: view.rightAnchor)
      .bottomAnchor(equalTo: view.bottomAnchor)

    containerView.flu
      .topAnchor(equalTo: view.topAnchor, constant: 60)
      .leftAnchor(equalTo: view.leftAnchor, constant: 15)
      .rightAnchor(equalTo: view.rightAnchor, constant: -15)
      .heightAnchor(equalToConstant: 180)
    
      ...
  }
}

支持类

class BaseView: UIView { ... }
class BaseTableViewCell: UITableViewCell { ... }
class BaseCollectionViewCell: UICollectionViewCell { ... }
class BaseViewController: UIViewController { ... }

安装

pod 'UIBaseKit'

作者

Myung gi son, [email protected]

许可证

UIBaseKit遵循MIT许可证。有关更多信息,请参阅LICENSE文件。