Swift 系统学习 28 类的访问权限

本文通过SwiftUI实现了一个简单的应用程序,演示了如何在App中进行主题模式的切换,包括白天模式和夜间模式,并展示了如何使用Swift语言特性来实现UI元素的颜色变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import UIKit
/**
  本节主要内容
 1.类的访问权限
 
 */
//controller里面

let app  = App(name: "Clarence")
app.show()
app.switchMode()
app.show()
app.switchMode()
app.show()

//UI.swift
import Foundation
import UIKit

// internal
enum Theme {
    case DayMode
    case NightMode
}

// public: 模块外可见(Contents.swift可见)
// internal是默认的权限设置, 可以省略
// internal
class UI {
    // 声明私有属性(App类不可见)
    // fontColor一定有值
    private var fontColor: UIColor!
    private var backgroundColor: UIColor!
    
    var themeMode: Theme = .DayMode {
        didSet {
            // 赋值成功, 调用私有方法, 切换主题
            self.changeTheme(themeMode: themeMode)
        }
    }
    
    // 对App可见
    init() {
        self.themeMode = .DayMode
        self.changeTheme(themeMode: self.themeMode)
    }
    
    // App类不可见
    private func changeTheme(themeMode: Theme) {
        switch themeMode {
        case .DayMode:
            fontColor       = UIColor.black
            backgroundColor = UIColor.white
        case .NightMode:
            fontColor       = UIColor.white
            backgroundColor = UIColor.black
        }
    }
    
    // public/internal
    func show() {
        print("The font color is \(fontColor == UIColor.white ? "White" : "Black")")
        print("The background color is \(backgroundColor == UIColor.white ? "White" : "Black")")
    }
  }



//app.swift
import Foundation

// 很多个类型: 类/结构体/枚举
public class App {
    // 声明私有属性
    private let ui = UI()
    public var name: String
    
    // 构造方法
    public init(name: String) {
        self.name = name
    }
    
    // 切换模式方法(Content.swift文件可见)
    public func switchMode() {
        switch ui.themeMode {
        case .DayMode :
            ui.themeMode = .NightMode
        case .NightMode:
            ui.themeMode = .DayMode
        }
    }
    
    // show方法
    public func show() {
        print("The app name is \(name)")
        ui.show()
    }
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值