按键精灵ios越狱脚本教程:多选框联动的ui界面

news/2025/1/15 19:29:35 标签: ios, ui, cocoa

以下是一个简单的 iOS 代码示例,使用 Swift 语言来创建一个包含多选框(复选框)的 UI 界面,并实现联动效果。

import UIKit

class ViewController: UIViewController {

    let checkbox1 = UIButton(type:.system)
    let checkbox2 = UIButton(type:.system)
    let checkbox3 = UIButton(type:.system)
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 设置复选框的外观
        checkbox1.setTitle("选项 1", for:.normal)
        checkbox1.setTitleColor(.black, for:.normal)
        checkbox1.addTarget(self, action: #selector(checkboxTapped(_:)), for:.touchUpInside)
        checkbox1.setImage(UIImage(systemName: "square"), for:.normal)
        checkbox1.setImage(UIImage(systemName: "checkmark.square"), for:.selected)
        checkbox1.translatesAutoresizingMaskIntoConstraints = false
        view.addSubview(checkbox1)
        
        checkbox2.setTitle("选项 2", for:.normal)
        checkbox2.setTitleColor(.black, for:.normal)
        checkbox2.addTarget(self, action: #selector(checkboxTapped(_:)), for:.touchUpInside)
        checkbox2.setImage(UIImage(systemName: "square"), for:.normal)
        checkbox2.setImage(UIImage(systemName: "checkmark.square"), for:.selected)
        checkbox2.translatesAutoresizingMaskIntoConstraints = false
        view.addSubview(checkbox2)
        
        checkbox3.setTitle("选项 3", for:.normal)
        checkbox3.setTitleColor(.black, for:.normal)
        checkbox3.addTarget(self, action: #selector(checkboxTapped(_:)), for:.touchUpInside)
        checkbox3.setImage(UIImage(systemName: "square"), for:.normal)
        checkbox3.setImage(UIImage(systemName: "checkmark.square"), for:.selected)
        checkbox3.translatesAutoresizingMaskIntoConstraints = false
        view.addSubview(checkbox3)
        
        // 添加约束
        NSLayoutConstraint.activate([
            checkbox1.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 50),
            checkbox1.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
            
            checkbox2.topAnchor.constraint(equalTo: checkbox1.bottomAnchor, constant: 20),
            checkbox2.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20),
            
            checkbox3.topAnchor.constraint(equalTo: checkbox2.bottomAnchor, constant: 20),
            checkbox3.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 20)
        ])
    }
    
    @objc func checkboxTapped(_ sender: UIButton) {
        sender.isSelected.toggle()
        // 实现联动逻辑,例如,当选中一个复选框时,取消其他复选框的选中状态
        if sender == checkbox1 {
            if sender.isSelected {
                checkbox2.isSelected = false
                checkbox3.isSelected = false
            }
        } else if sender == checkbox2 {
            if sender.isSelected {
                checkbox1.isSelected = false
                checkbox3.isSelected = false
            }
        } else if sender == checkbox3 {
            if sender.isSelected {
                checkbox1.isSelected = false
                checkbox2.isSelected = false
            }
        }
    }
}

代码解释

  1. 导入 UIKit 框架:这是 iOS 开发中构建用户界面的基本框架。
  2. 定义 UIButton 实例:创建三个 UIButton 实例,即 checkbox1checkbox2 和 checkbox3,它们将作为复选框使用。
  3. 视图加载方法
    • 在 viewDidLoad 方法中,为每个按钮设置显示的文本和文本颜色,将其添加到视图中,并添加点击事件的处理方法 checkboxTapped
    • 为每个按钮设置正常状态和选中状态的图像,使用 UIImage(systemName:) 方法从系统图标库中获取图标。
    • 为每个按钮设置 translatesAutoresizingMaskIntoConstraints 为 false,以便使用 Auto Layout 进行布局。
    • 使用 NSLayoutConstraint.activate 为按钮添加约束,使它们垂直排列并距视图左边和顶部有一定距离。
  4. 点击事件处理方法
    • checkboxTapped 方法在按钮被点击时调用。
    • 调用 toggle() 方法切换按钮的选中状态。
    • 根据点击的按钮不同,实现联动逻辑:如果选中一个复选框,将其他复选框设置为未选中状态。

使用说明

  1. 创建一个新的 iOS 项目,将上述代码添加到 ViewController.swift 文件中。
  2. 运行项目,你将看到三个带有复选框的选项垂直排列在屏幕上。
  3. 点击其中一个复选框,它将被选中,同时其他复选框将自动取消选中。

如果你想要实现更复杂的联动逻辑,例如多选多个选项,或者根据不同选项的组合执行不同的操作,可以根据上述代码进行扩展和修改。你可以添加更多的 UIButton 实例,并修改 checkboxTapped 方法中的逻辑来满足你的需求。

请注意,在实际开发中,为了更好的代码组织和可维护性,你可能需要将界面元素和逻辑代码分离到不同的文件或类中,例如使用 UIView 的子类来封装这些复选框,以及使用 UITableView 或 UICollectionView 来处理大量的选项。


http://www.niftyadmin.cn/n/5824307.html

相关文章

#CSS混合模式:解决渐变背景下的文字可见性问题

在现代网页设计中,渐变背景的使用越来越普遍。然而,当我们在渐变背景上放置文字时,常常会遇到一个问题:文字在某些背景颜色下可能变得难以阅读。今天,我们将探讨一个优雅的解决方案:使用CSS混合模式。 问题…

滚动字幕视频怎么制作

在当今的视频创作领域,滚动字幕被广泛应用于各种场景,为视频增添丰富的信息展示和独特的视觉效果。无论是影视剧中的片尾字幕、新闻节目中的资讯滚动,还是综艺节目中的人员与鸣谢信息展示,滚动字幕都发挥着不可或缺的作用。接下来…

Ubuntu中双击自动运行shell脚本

方法1: 修改文件双击反应 参考: https://blog.csdn.net/miffywm/article/details/103382405 chmod x test.sh鼠标选中待执行文件,在窗口左上角edit菜单中选择preference设计双击执行快捷键,如下图: 方法2: 设置一个应用 参考: https://blo…

GD32F470Z外部晶振不起振

亲测,主要的原因是因为系统配置里面选择的晶振,选择内部还是外部的无源晶振。 1.无源晶振 打开startup_gd32f450_470.s这个起始文件。 ​​​​​​​ ​​​​​​​ 找到SystemInit。 跳进去这个函数。 在这个函数里面最底下找到sys…

【进程与线程】程序和进程在内存中的表现

在计算机系统中,程序和进程是两个密切相关但又有本质区别的概念,尤其在内存中的表现上有显著不同: 在这张图中可以直观地看出程序和进程在内存中的结构区别。 基本定义 程序 程序 是一个 静态实体,表示一组写好的指令和数据的…

SpringMvc解决跨域问题的源码汇总。

看本文章前,需了解跨域的缘由。 其次,了解RequestMapping的基础原理 最后我们来解析SpringMvc是如何处理跨域问题的。 跨域信息配置 SpringMvc分为全局级别和局部级别两种,全局级别就是任何跨域请求都起作用。 全局级别 全局级别就是在配…

高级java每日一道面试题-2025年01月08日-微服务篇-负载平衡的意义什么 ?

如果有遗漏,评论区告诉我进行补充 面试官: 负载平衡的意义什么 ? 我回答: 在Java高级面试中,负载平衡(Load Balancing)是一个重要的技术话题。负载平衡是分布式系统中用于优化资源使用、最大化吞吐量、最小化响应时间以及避免任何单一节点…

从零到一:用 Flask 和 Docker 构建并部署一个简单的接口请求页面

在现代 Web 开发中,快速构建和部署 API 接口是一个非常重要的技能。Flask 作为一个轻量级的 Python Web 框架,非常适合用来快速开发 RESTful API。而 Docker 则可以帮助我们将应用容器化,实现跨平台部署和运行。本文将带你从零开始&#xff0…