当前位置: 首页 > news >正文

IOS 11 通用Base控制器封装

整体规划

BaseController:把viewDidLoad逻辑拆分为三个方法,方便管理。

BaseCommonController:不同项目可以复用的逻辑,例如:设置背景颜色方法等

BaseLogicController:本项目的通用逻辑,主要是创建界面布局容器,例如:快速初始化一个四边都在安全区的垂直方向布局;快速初始化四边都在安全区的TableView布局等。

BaseTitleController:自定义标题相关,例如:快速添加左侧按钮,右侧按钮。

BaseController

//
//  BaseController.swift
//  MyCloudMusic
//
//  Created by jin on 2024/8/19.
//import UIKitclass BaseController: UIViewController {override func viewDidLoad() {super.viewDidLoad()initViews()initDatum()initListeners()}/// 找控件func initViews() {}/// 设置数据func initDatum() {}/// 设置监听器func initListeners()  {}}

BaseCommonController

//
//  BaseCommonController.swift
//  MyCloudMusic
//
//  Created by jin on 2024/8/19.
//import UIKitclass BaseCommonController: BaseController {/// 设置背景颜色/// - Parameter color: <#color description#>func setBackgroundColor(_ color:UIColor) {view.backgroundColor = color}}

BaseLogicController

//
//  BaseLogicController.swift
//  MyCloudMusic
//
//  Created by jin on 2024/8/19.
//import UIKit//提供类似Android中更高层级布局框架
import TangramKitclass BaseLogicController: BaseCommonController {/// 根容器var rootContainer: TGBaseLayout!/// 头部容器var superHeaderContainer: TGBaseLayout!var superHeaderContentContainer: TGBaseLayout!/// 容器var container: TGBaseLayout!/// 底部容器var superFooterContainer: TGBaseLayout!var superFooterContentContainer: TGBaseLayout!/// 初始化RelativeLayout容器,四边都在安全区内func initRelativeLayoutSafeArea() {initLinearLayout()//headerinitHeaderContainer()//中间内容容器container = TGRelativeLayout()container.tg_width.equal(.fill)container.tg_height.equal(.fill)container.backgroundColor = .clearrootContainer.addSubview(container)//footerinitFooterContainer()}/// 初始化垂直方向LinearLayout容器func initLinearLayout() {rootContainer = TGLinearLayout(.vert)rootContainer.tg_width.equal(.fill)rootContainer.tg_height.equal(.fill)rootContainer.backgroundColor = .clearview.addSubview(rootContainer)}/// 头部容器,安全区外,一般用来设置头部到安全区外背景颜色func initHeaderContainer() {superHeaderContainer = TGLinearLayout(.vert)superHeaderContainer.tg_width.equal(.fill)superHeaderContainer.tg_height.equal(.wrap)superHeaderContainer.backgroundColor = .clear//头部内容容器,安全区内superHeaderContentContainer = TGLinearLayout(.vert)superHeaderContentContainer.tg_height.equal(.wrap)superHeaderContentContainer.tg_top.equal(TGLayoutPos.tg_safeAreaMargin)superHeaderContentContainer.tg_leading.equal(TGLayoutPos.tg_safeAreaMargin)superHeaderContentContainer.tg_trailing.equal(TGLayoutPos.tg_safeAreaMargin)superHeaderContentContainer.backgroundColor = .clearsuperHeaderContainer.addSubview(superHeaderContentContainer)rootContainer.addSubview(superHeaderContainer)}func initFooterContainer() {superFooterContainer = TGLinearLayout(.vert)superFooterContainer.tg_width.equal(.fill)superFooterContainer.tg_height.equal(.wrap)superFooterContainer.backgroundColor = .clear//底部内容容器,安全区内superFooterContentContainer = TGLinearLayout(.vert)superFooterContentContainer.tg_height.equal(.wrap)superFooterContentContainer.tg_bottom.equal(TGLayoutPos.tg_safeAreaMargin)superFooterContentContainer.tg_leading.equal(TGLayoutPos.tg_safeAreaMargin)superFooterContentContainer.tg_trailing.equal(TGLayoutPos.tg_safeAreaMargin)superFooterContentContainer.backgroundColor = .clearsuperFooterContainer.addSubview(superFooterContentContainer)rootContainer.addSubview(superFooterContainer)}override func initViews() {super.initViews()setBackgroundColor(.colorBackground)}
}

使用

启动界面使用BaseLogicController,因为他不需要标题控制器。

class SplashController: BaseLogicController {override func initViews() {super.initViews()self.initRelativeLayoutSafeArea()...}
}


http://www.mrgr.cn/news/2808.html

相关文章:

  • Ruby简介
  • 本地项目git同步到线上
  • 【STM32 HAL库】寻迹小车 开环控制 状态机 TB6612+TCRT5000+HC-05
  • 关于白鳝存储过程技术话题
  • Java---二维数组
  • MongoDB 在 Java 中的使用教程
  • windows vs2022 MFC使用webview2嵌入网页
  • GDB的基本使用
  • ARM64的汇编资源
  • CE修改器的简单使用
  • 室内密闭空间防撞无人机技术详解
  • 【STM32 FreeRTOS】队列和缓冲区
  • Linux驱动开发基础(设备树)
  • HarmonyOS NEXT星河版零基础入门(3)
  • 亲测好用,吐血整理 ChatGPT 3.5/4.0 新手使用手册~ 【2024.08.21 更新】
  • ICWS 2024 _ 基于生成长度预测的大语言模型推理请求调度
  • 快速web开发:Vue和FastAPI完美组合
  • 动态规划part 12
  • Leetcode 142. 环形链表 II
  • qt使用menu