首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Swift中制作计算器

制作一个简单的计算器应用是一个很好的Swift和iOS开发入门项目。以下是一个详细的步骤指南,帮助你创建一个基本的计算器应用。

1. 创建一个新的Xcode项目

  1. 打开Xcode。
  2. 选择 "Create a new Xcode project"。
  3. 选择 "App" 并点击 "Next"。
  4. 输入项目名称(例如 "Calculator"),选择 "Swift" 作为编程语言,确保 "User Interface" 选择 "Storyboard"。
  5. 选择保存位置并点击 "Create"。

2. 设计用户界面

Main.storyboard 中设计计算器的用户界面。你可以使用按钮、标签和堆栈视图来布局计算器。

  1. 打开 Main.storyboard
  2. 拖动一个 UILabel 到视图控制器顶部,用于显示结果。
  3. 使用 UIButton 创建数字按钮(0-9)和操作按钮(+、-、*、/、=、C)。
  4. 使用 UIStackView 来组织按钮,使其布局整齐。

3. 创建视图控制器

ViewController.swift 中实现计算器的逻辑。

代码语言:javascript
复制
import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var displayLabel: UILabel!
    
    private var isFinishedTypingNumber: Bool = true
    private var currentValue: Double {
        get {
            guard let number = Double(displayLabel.text!) else {
                fatalError("Cannot convert display label text to a Double.")
            }
            return number
        }
        set {
            displayLabel.text = String(newValue)
        }
    }
    
    private var firstNumber: Double = 0
    private var operation: String = ""
    
    @IBAction func numberPressed(_ sender: UIButton) {
        if let numberValue = sender.currentTitle {
            if isFinishedTypingNumber {
                displayLabel.text = numberValue
                isFinishedTypingNumber = false
            } else {
                displayLabel.text = displayLabel.text! + numberValue
            }
        }
    }
    
    @IBAction func operationPressed(_ sender: UIButton) {
        isFinishedTypingNumber = true
        firstNumber = currentValue
        if let operationValue = sender.currentTitle {
            operation = operationValue
        }
    }
    
    @IBAction func equalsPressed(_ sender: UIButton) {
        isFinishedTypingNumber = true
        let secondNumber = currentValue
        
        var result: Double = 0
        
        switch operation {
        case "+":
            result = firstNumber + secondNumber
        case "-":
            result = firstNumber - secondNumber
        case "*":
            result = firstNumber * secondNumber
        case "/":
            result = firstNumber / secondNumber
        default:
            fatalError("The operation passed in does not match any of the cases.")
        }
        
        currentValue = result
    }
    
    @IBAction func clearPressed(_ sender: UIButton) {
        displayLabel.text = "0"
        isFinishedTypingNumber = true
        firstNumber = 0
        operation = ""
    }
}

4. 连接UI元素和代码

  1. 打开 Main.storyboard
  2. 选择视图控制器并打开 "Assistant Editor"(双窗口模式)。
  3. 确保右侧窗口显示 ViewController.swift
  4. 按住 Control 键并从 UILabel 拖动到 ViewController.swift,创建一个 IBOutlet,命名为 displayLabel
  5. 按住 Control 键并从每个数字按钮拖动到 ViewController.swift,创建一个 IBAction,命名为 numberPressed
  6. 按住 Control 键并从每个操作按钮(+、-、*、/)拖动到 ViewController.swift,创建一个 IBAction,命名为 operationPressed
  7. 按住 Control 键并从等号按钮(=)拖动到 ViewController.swift,创建一个 IBAction,命名为 equalsPressed
  8. 按住 Control 键并从清除按钮(C)拖动到 ViewController.swift,创建一个 IBAction,命名为 clearPressed

5. 运行应用

  1. 选择一个模拟器或连接一个物理设备。
  2. 点击 Xcode 顶部的 "Run" 按钮(或按 Cmd + R)。
  3. 你的计算器应用应该在模拟器或设备上运行。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Swift专题讲解十六——ARCSwift的应用

    Swift专题讲解十六——ARCSwift的应用 一、引言         ARC(自动引用计数)是Objective-C和Swift中用于解决内存管理问题的方案。...在学习Objective-C编程时经常会学习到一个关于ARC的例子:一个公用的图书馆,每次进入一人就将卡插入,走的时候将自己的卡拔出拿走。...Swift也采用同样的方式进行内存管理。         注意:Swift只有引用类型有自动引用计数,结构体、枚举这类值类型是没有引用计数的。...cls 若引用的实例被释放后,其另一个实例的引用也将被置为nil,所以weak只能用于optional类型的属性,然而在开发还有一种情况,某个类必须保有另一个类的示例,这个实例不能为nil,但是这个属性又不能影响其原始实例的释放...= MyClassEight() obj7=nil 除了两个类实例间会产生循环引用,闭包,也可能出现循环引用,当某个类包含一个闭包属性,同时这个闭包属性又使用了类实例,则会产生循环引用,示例如下

    1.3K20

    Xcode 添加 Swift package 依赖

    要尝试,请打开 ContentView.swift 并将此导入添加到顶部: import SamplePackage 是的,外部依赖关系现在是一个模块,我们可以需要的任何地方导入它。...现在,我们可以我们看来尝试它。例如,我们可以模拟一个简单的彩票,方法是制作一个从1到60的数字范围,选择7个数字,将它们转换为字符串,然后将它们连接为一个字符串。...Swift这只需要一行代码,因为序列具有map()方法,通过将函数应用于每个元素,我们可以将一种类型的数组转换为另一种类型的数组。...我们的例子,我们希望从每个整数初始化一个新的字符串,因此我们可以将String.init用作要调用的函数。...PS:您可以Xcode内阅读我的简单扩展的源代码——只需打开 Sources> SamplePackage 组,然后查找SamplePackage.swift。您会发现它并没有做太多工作!

    6.7K10

    Swift 编写脚本:Git Hooks

    本例,我使用了 commit-msg 钩子,它能够在当前提交信息生效前修改此信息。钩子由一个参数调用,该参数是指向包含用户输入的提交消息的文件的路径。...为什么我使用Swift? Git hooks可以使用任何你熟悉的,并且主机上安装了解释器(通过shebang来指定)的脚本语言来编写。...为此, macOS 下选择 Command Line Tool 创建一个新的项目。 创建的文件顶部加上Swift shebang,引入Foundation库。 #!...在下面的截屏,创建了两个分支,一个带有问题编号,一个没有,它们有着相同的提交信息。可以看出脚本运行正常,并且只需要时才更改提交消息!...关于我们 我们是由 Swift 爱好者共同维护,我们会分享以 Swift 实战、SwiftUI、Swift 基础为核心的技术内容,也整理收集优秀的学习资料。

    1.5K10

    iOS开发——GCDSwift的变脸

    Xcode8正式发布后,Swift3也随即发布,为了跟上苹果这艘大船的脚步,赶紧逼着自己看文档哦。...在看文档的过程,发现GCD的变化跟OC相比简直都要不认识了,赶紧写个文章总结下,顺手复习下GCD死锁的概念,死锁的总结发布另一篇文章里了。...GCD 的这个语法模式无论是和 Objc 还是 Swift 的整体风格都不太搭调。 所以 Swift 3 对它的语法进行了彻底的改写。...比如最常用的,一个异步队列读取数据, 然后再返回主线程更新 UI, 这种操作新的 Swift 语法是这样的: DispatchQueue.global().async { DispatchQueue.main.async...希望这篇文章能帮你节省查阅文档的时间, 闲暇时刻了解一些技术点。

    2.2K20

    Java规模软件开发实训——简单计算器制作

    前言:现代社会中,计算器是我们生活不可或缺的工具之一。它们可以轻松地进行各种数值计算,从简单的加减乘除到复杂的科学运算,为我们提供了快捷准确的计算结果。...等号按钮("="):将文本框的数值保存为第二个操作数,根据记录的运算符执行计算,并将结果显示文本框,并将计算历史记录添加到列表。 取反按钮("±"):将文本框的数值取反。...Swing事件调度线程创建一个计算器对象并设置可见性。 ☀️问题描述 该项目旨在解决以下问题: 用户需要一个简单易用的计算器程序,以便进行基本的数值计算操作。...等号功能:用户可以通过点击"="按钮将文本框的数值保存为第二个操作数,并根据记录的运算符执行相应的计算操作,将结果显示文本框。...通过使用Java Swing库,我创建了一个具有图形界面的计算器窗口,用户可以在其中进行基本的数值计算操作。设计和开发过程,我遇到了一些挑战和问题,但最终成功地解决了它们。

    27910

    c语言设计计算器-少儿编程用Scratch制作计算器

    是一款图形化的编程工具,初学者也很容易通过鼠标操作积木块操作角色,完成动作、外形、声音的变化c语言设计计算器,这是能够风靡全球的基础。...下面“7分钟课堂”要和大家分享的是函数和运算知识,通过制作出一个真实的计算器,可完成运算功能,一起来学习一下。   首先,我们制作一个计算器的面板,ppt是非常适合的工具。   ...其实数组的例子在生活随处可见,比如体育课上同学们排成三行四列。初等数学的知识都是从生活抽象而来的,小码王尽量把数学概念融入到孩子的世界里。   第三步,通过观察,我们可以把功能相同的按键归为一组。...第四步,通过这样“总”-“分”的结构,我们就把问题分解了,接下来针对第三步的分组,分别编写函数。   我们要计算的是“数”,可是计算机接受到的,其实是0~9单一的数字,和小数点。...计算机完成这样的任务:   (由于显示屏宽度的原因,我们限制数字的位数不超过14)   当点击“退格”键时,计算机完成这样的任务:   第五步,我们需要把列表里临时存放的各位数转换成被计算的数字c语言设计计算器

    1.2K40

    Swift创建可缩放的图像视图

    本教程,我们将建立一个可缩放、可平移的图像视图来实现这一功能。 计划 他们说,一张图片胜过千言万语--但它不一定要花上一千行代码!对于我们的可缩放图像视图,我们要做的是让它成为一个可缩放的视图。...medium.com/media/afad3… commonInit(),我们将图像视图居中,并设置它的高度和宽度,而不是把它固定在父视图上。这样一来,滚动视图就会从图像视图中获得其内容大小。...这包括设置最小和最大的缩放级别,以及指定用户放大时使用的UIView(我们的例子,它将是图像视图)。让我们来设置滚动视图(为清晰起见,添加一些注释)。...我们将通过我们的类添加imageName字符串,并在字符串改变时更新UIImageView来实现。...让我们给我们的类添加另一个初始化器,这样我们就可以代码设置图像名称。 medium.com/media/074d4… 就这样了!现在我们可以像这样通过图片名称以编程方式初始化我们的视图了。

    5.7K20

    Excel制作甘特图,超简单

    甘特图是规划师和项目经理最简单、最有效的视觉工具,而Excel是制作甘特图最简洁常用的工具。...本文将介绍如何在Excel制作甘特图: 1.使用堆积条形图快速绘制简单的甘特图 2.通过调整Excel图表和次坐标轴,甘特图中为每个任务添加完成状态 3.使用Excel表的动态甘特图,以便在时间线自动更新的情况下轻松添加...保留这个数字格式,这样Excel就可以轻松地按照预期制作甘特图,而不会沿着y轴绘制日期。...图2 步骤3:选择“日期”的数据,将数字格式从“常规”更改为“短日期”,也可以CTRL+1对话框自定义格式。 图3 注:也可以图表更改数字格式。...步骤4:单击选择第一个系列,即示例的蓝色系列。选取“格式”选项卡的“形状填充——无填充颜色”。 图4 步骤5:甘特图上需要按从上到下的升序调整任务排列。

    7.7K30
    领券