iOS26适配指南之UIVisualEffectView

介绍

增加了符合 Liquid Glass 风格的效果UIGlassEffectUIGlassContainerEffect

UIGlassEffect

代码

swift 复制代码
import UIKit

class ViewController: UIViewController {
    lazy var wwdcLabel: UILabel = {
        let label = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 50))
        label.text = "WWDC25"
        label.textAlignment = .center
        label.textColor = .white
        return label
    }()
    let visualEffectView = UIVisualEffectView()

    override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = .systemTeal

        glassEffect()
    }

    // MARK: UIGlassEffect
    func glassEffect() {
        // iOS26新增
        let glassEffect = UIGlassEffect()
        glassEffect.isInteractive = true
        visualEffectView.effect = glassEffect
        visualEffectView.frame = CGRect(x: view.frame.midX - 50, y: view.frame.midY - 25, width: 100, height: 50)
        visualEffectView.layer.cornerRadius = 20
        visualEffectView.clipsToBounds = true
        visualEffectView.contentView.addSubview(wwdcLabel)
        view.addSubview(visualEffectView)
    }
}

效果

UIGlassContainerEffect

代码

swift 复制代码
import UIKit

class ViewController: UIViewController {
    lazy var wwdcLabel: UILabel = {
        let label = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 50))
        label.text = "WWDC25"
        label.textAlignment = .center
        label.textColor = .white
        return label
    }()
    lazy var iOSLabel: UILabel = {
        let label = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 50))
        label.text = "iOS26"
        label.textAlignment = .center
        label.textColor = .white
        return label
    }()
    let visualEffectView = UIVisualEffectView()

    override func viewDidLoad() {
        super.viewDidLoad()

        view.backgroundColor = .systemTeal

        glassContainerEffect()
    }

    // MARK: UIGlassContainerEffect
    func glassContainerEffect() {
        // iOS26新增
        let glassContainerEffect = UIGlassContainerEffect()
        visualEffectView.effect = glassContainerEffect
        visualEffectView.frame = CGRect(x: 0, y: 0, width: 210, height: 50)
        visualEffectView.center = view.center
        let glassEffect = UIGlassEffect()
        let view1 = UIVisualEffectView(effect: glassEffect)
        view1.frame = CGRect(x: 10, y: 10, width: 100, height: 50)
        view1.contentView.addSubview(wwdcLabel)
        let view2 = UIVisualEffectView(effect: glassEffect)
        view2.frame = CGRect(x: 110, y: 10, width: 100, height: 50)
        view2.contentView.addSubview(iOSLabel)
        visualEffectView.contentView.addSubview(view1)
        visualEffectView.contentView.addSubview(view2)
        view.addSubview(visualEffectView)
    }
}

效果

相关推荐
专一的黑猫15 小时前
写一个iPhone应用程序,要求可以输入名字,点击按钮后,会显示一段文字向输入的名字打招呼,例如输入“宝玉”,显示“你好,宝玉!”
ios·iphone
东坡肘子21 小时前
当 Linux 成为“空气”:容器、Agent 与不再重要的“桌面之争” -- 肘子的 Swift 周报 #143
人工智能·swiftui·swift
_瑞2 天前
深入理解灵动岛
前端·ios·app
黑科技iOS上架2 天前
分享一个开源的iOS应用AppIcon生成器
经验分享·ios
wabil3 天前
【LVGL】滑动切换页面的界面优化实践
开发语言·ios·swift
威武的花瓣3 天前
调用Page.RegisterAsyncTask()的异步页
ios·iphone
Digitally4 天前
5 种简易方法:摩托罗拉手机数据迁移至 iPhone 17
ios·智能手机·iphone
EricStone6 天前
VibeCoding工程流程学习二:iOS项目架构
ios·vibecoding
天桥吴彦祖8 天前
判断iOS如何监听手机屏幕是否锁屏
ios
东坡肘子8 天前
SPI 加入 Apple,Swift 迈向自举 -- 肘子的 Swift 周报 #142
人工智能·swiftui·swift