code.club
標題:
用 swift 4.0 新寫的簡易計算機
[打印本頁]
作者:
swift
時間:
2018-8-14 17:21
標題:
用 swift 4.0 新寫的簡易計算機
本帖最後由 swift 於 2020-12-28 16:39 編輯
這次的特點有幾個:
一,有autolayout,所以會自動配合裝置大小不同來顯示,直放橫放都可以。
二,多了 back 功能,輸入之後可以逐一刪除掉。
三,1.005 - 1.004 會得到預想中的 0.001 ,而不是 0.00099999....。
致命的 bug 尚未發現,但功能上不盡如人意,和原本想要的有些不足之處。
[youtube]GlDbCo8618U[/youtube]
//
// ViewController.swift
// newTest0
//
// Created by 孫英奇 on 2018/8/12.
// Copyright © 2018年 孫英奇. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
var tempSum:String = "0"
var newMath = 0
var oldMath = 0
var isCalc = false //看之前是否已有一次計算行為
var isSigned = false
@IBAction func clearAll(_ sender: UIButton) {
mainWindow.text! = "0"
dotOK.isEnabled = true
}
@IBAction func math(_ sender: UIButton) {
tempSum = mainWindow.text!
oldMath = newMath
isCalc = true
//將目前按鍵給予不同判斷值
if sender.currentTitle! == "+"
{
newMath = 1
} else if sender.currentTitle! == "-" {
newMath = 2
} else if sender.currentTitle! == "*" {
newMath = 3
} else if sender.currentTitle! == "/" {
newMath = 4
} else {
newMath = 0
}
switch (oldMath) {
case 1:
mainWindow.text! = "\(Decimal(string : mainWindow.text!)! + Decimal(string:tempSum)!)"
case 2: mainWindow.text! = "\(Decimal(string:tempSum)! - Decimal(string : mainWindow.text!)!)"
case 3: mainWindow.text! = "\(Decimal(string:tempSum)! * Decimal(string : mainWindow.text!)!)"
case 4: mainWindow.text! = "\(Decimal(string:tempSum)! / Decimal(string : mainWindow.text!)!)"
default:
tempSum = mainWindow.text!
}
}
@IBOutlet weak var dotOK: UIButton!//"."的功能是否可用的旗標
@IBOutlet weak var mainWindow: UILabel!//主視窗內容
@IBAction func signed(_ sender: UIButton) {
if isSigned == false {
isSigned = true
mainWindow.text! = "-" + mainWindow.text!
} else {
isSigned = false
mainWindow.text!.removeFirst()
}
}
//數字鍵包含.的功能
@IBAction func numButton(_ sender: UIButton) {
if mainWindow.text! == "0" {
if sender.currentTitle! == "0" {
mainWindow.text! = "0"
} else if sender.currentTitle! == "." {
mainWindow.text! = "0."
dotOK.isEnabled = false
} else {
mainWindow.text! = sender.currentTitle! }
}
else {
if sender.currentTitle! == "." && dotOK.isEnabled {
mainWindow.text! += "."
dotOK.isEnabled = false
} else {
mainWindow.text! += sender.currentTitle!}
}
}
//回刪鍵的功能
@IBAction func backspace(_ sender: UIButton) {
if mainWindow.text!.count > 1 {
mainWindow.text!.removeLast()
} else if mainWindow.text!.count == 1 {
mainWindow.text! = "0"
}
isDotOK()
}
//如果mainWindow.text!中不含"."的話,isDot立即恢復功能。
func isDotOK(){
if mainWindow.text!.contains(".") {
dotOK.isEnabled = false
} else {
dotOK.isEnabled = true
}
}
override func viewDidLoad() {
super.viewDidLoad()
print("newTest0")
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
作者:
swift
時間:
2018-8-18 09:14
最新版,增加幾個功能:
數字鍵和計算鍵有音效。除以0時會報錯也有錯誤音效。
小數點後最多12位。
會隨著視窗內數字長短調整字體大小,以容納比較大的數字。
按完數字之後可以按 back 鍵倒回去刪除,刪到0為止。
直接按小數點會自動在前面補 0 變成 0. 。
可以按正負號。
1.005 - 1.004 會得 0.001 ,而不會出現 0.0099999....的數字。
[youtube]MaxS4988kXU[/youtube]
歡迎光臨 code.club (https://code.club/)
Powered by Discuz! X3.2