[swift] 시계 앱을 만들어 봤어요.(자체 전용 어플리케이션 개발 중 하나)

16420 단어 Swift
applstore에는 다양한 응용 프로그램이 있습니다.
결국 가장 간지러운 곳으로 손을 뻗어야 한다고 생각하면
그래서 혼자 할 수밖에 없죠.
나는 휴일에 각종 응용 프로그램을 사용하기로 결정했다.
그리고 갑자기 어려운 일을 하면 안 돼요.
우선 시계 앱이다.
패러디 한번 찾아보고 싶어요.
기사가 너무 낡아서 swift의 작법도 바뀌었고, 나는 각양각색의 것에 빠졌다
어쨌든 아래의 문법으로 행동하는 것이 완성되었다.

화면 이미지


작업 중 무선 충전기에 의지하다
좌석 시계 대신 사용하고 싶어 시분초를 대폭 표시하도록 설계됐다.
(디자인상으로는 아직 임시일 뿐.)

출처


※ 아이템 구성은 storyboard에서만 가능하지만, 여기서 생략합니다.
UIViewController.swift
import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var txtYear: UITextField!
    @IBOutlet weak var txtMonth: UITextField!
    @IBOutlet weak var txtDay: UITextField!
    @IBOutlet weak var txtHour: UITextField!
    @IBOutlet weak var txtMinute: UITextField!
    @IBOutlet weak var txtSecond: UITextField!
    @IBOutlet weak var txtWeekday: UITextField!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.

        viewInit()
        timerFiring()
    }

    func timerFiring() {
        let timer = Timer(timeInterval: 1,
                          target: self,
                          selector: #selector(timeCheck),
                          userInfo: nil,
                          repeats: true)
        RunLoop.main.add(timer, forMode: .default)
    }

    @objc func timeCheck() {
        let date = NSDate()
        let calendar = NSCalendar(calendarIdentifier: NSCalendar.Identifier.gregorian)

        let arrWeekday: Array = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]

        let year = calendar?.component(.year, from: date as Date)
        let month = calendar?.component(.month, from: date as Date)
        let day = calendar?.component(.day, from: date as Date)
        let hour = calendar?.component(.hour, from: date as Date)
        let minute = calendar?.component(.minute, from: date as Date)
        let second = calendar?.component(.second, from: date as Date)
        let weekday = calendar?.component(.weekday, from: date as Date)
        let dayOfTheWeek = arrWeekday[weekday! - 1]

        txtYear.text = String(year!)
        editTextField(textField: txtYear, size: 50.0, color: .white)
        txtMonth.text = String(format: "%02d", month!)
        editTextField(textField: txtMonth, size: 50.0, color: .white)
        txtDay.text = String(format: "%02d", day!)
        editTextField(textField: txtDay, size: 50.0, color: .white)
        txtHour.text = String(format: "%02d", hour!)
        editTextField(textField: txtHour, size: 180.0, color: .white)
        txtMinute.text = String(format: "%02d", minute!)
        editTextField(textField: txtMinute, size: 180.0, color: .white)
        txtSecond.text = String(format: "%02d", second!)
        editTextField(textField: txtSecond, size: 180.0, color: .white)
        txtWeekday.text = String(dayOfTheWeek)
        editTextField(textField: txtWeekday, size: 50.0, color: .white)
    }

    func editTextField(textField:UITextField, size:CGFloat, color:UIColor) {
        textField.font = UIFont.boldSystemFont(ofSize: size)
        textField.textColor = color
        textField.isEnabled = false
    }

    func viewInit() {
        view.backgroundColor = UIColor.black
    }
}

적합한 포인트 등


자기가 이해가 안 돼서 못 쓴 거예요?
NSCalendar.component에서 년 월 일 시 분 초 주 변수를 통일적으로 얻다
그리고 원하는 요소를 하나하나 화면에 설정하기만 하면 된다
이런 느낌의 샘플이 있어요.
그 작법은 도저히 오류를 없앨 수 없다
NSCalender.component에서 항목별로 쓰기 방법을 결정했습니다.
그런 다음 Timer를 정의합니다.Fire()로 불을 붙이면
나는 1초에 한 번씩 시간을 얻으면 화면 표시도 업데이트될 것이라고 생각한다
시동을 걸 때 한 번만 움직였는데 멈춘 것 같다
Runloop에서 반복적으로 처리합니다.
매우 간단한 기능이지만 일단 적어 놓으면 그나마 서너 시간이 걸렸다.
swift의 개발도 생산성을 높이고 싶다.

여기서 업데이트


이를 토대로 화면 설정에 배색, 글씨체 등을 바꾸는 디자인
경고(타이머) 기능, 다른 화면에서 작업 표시줄 기능,
트위터 알림 같은 것도 이루고 싶은데.

좋은 웹페이지 즐겨찾기