관리 메뉴

java,javascript,android,php,sql,공부용,메모용

명언생성기, 버튼 클릭시 박스안에 내용이 랜덤으로 나오게하기/ Xcode SwiftUI 공부 본문

모바일/SwiftUI ios 공부

명언생성기, 버튼 클릭시 박스안에 내용이 랜덤으로 나오게하기/ Xcode SwiftUI 공부

yy_dd2 2021. 11. 29. 17:47
반응형

명언생성기라 하고...

박스안에 랜덤 글씨가 생성되고 나타나도록 하는 앱 만들기

 

UiKit 사용자 인터페이스 관리 / 이벤트 처리가 주목적인 프레임워크
Ui 붙는 클래스를 사용하려면 import 시켜야함
UIView 화면을 구성하는 기본 클래스
UIViewController 사용자 상호작용에 응답하는 곳 / 앱을 구성하는 곳 / 화면을 관리하는 단위

 

1. 프로젝트 파일 생성 ( ios - app /next/ 프로젝트이름설정 - Team 개발자설정 - interface(storyboard) )

2. Main.storyboard 눌러서 Ui 만들기

Ui만들 때 아래내용 확인

AutoLayout 제약조건을 이용해 다양한 해상도에 대응하기 위한 것
IBOutlet / IBAction 스토리보드와 코드를 연결할 때 사용함 (우클릭드래그 짜릿)


크기가 변경되는 뷰들에 대해서 대응해 제약을 거는 것
(늘어나고 줄어드는 것의 우선순위를 두고 크기 유지나 자동으로 없어지도록 하는 것 이걸 설정해두지 않으면 오류남)
Content Hugging : 작게 하면 우선순위가 높음
Compression Resistance : 크게하면 우선순위가 높음 (크게해서 사라지지 않도록 할 수 있음)
명언생성기 만들면서 세로로 나란히 정해진 크기의 박스안에 있는 라벨일 때 두개의 라벨안에 글씨가 가득차면
명언이 작성되는 라벨에 명언이 길어지면 Content Hugging 우선순위를 작게해서 높은 순위가 되도록하고
명언의 이름의 Compression Resistance 크게해서 우선순위가 높게해 사라지지 않도록 설정함 (작게하면 명언의 길이가 길어지면 명언자의 이름은 사라짐)

3.  ViewController.swift 우클릭 드래그로 IBOutlet/IBAction 으로 버튼과 라벨 연결하기

import UIKit

class ViewController: UIViewController {
	// 명언, 명언자 라벨
    @IBOutlet weak var quotLabel: UILabel!
    @IBOutlet weak var nameLabel: UILabel!
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
	
    // 명언생성 버튼
    @IBAction func tapQuotesGenertorButton(_ sender: Any) { 
    }

}

4. Quote.swift 구조체 새파일 만들기

스위프트도 MVC 기반으로 만들어진다

import Foundation

struct Quote {
    // 명언 내용을 가지는
    let contents: String
    // 명언 작성자 이름
    let name: String
}

 

5. ViewController.swift 

명언배열과 랜덤한 값을 주고 버튼클릭 하면 명언라벨 명언자라벨에 텍스트가 나타나도록 하기

//
//  ViewController.swift
//  QuotesGenertor
//
//  Created by yd on 2021/11/29.
//

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var quotLabel: UILabel!
    @IBOutlet weak var nameLabel: UILabel!
    
    // 명언 배열
    let quotes  = [
        Quote(contents: "명언 내용 A", name: "명언자 A"),
        Quote(contents: "명언 내용 B", name: "명언자 B"),
        Quote(contents: "명언 내용 C", name: "명언자 C"),
        Quote(contents: "명언 내용 D", name: "명언자 D"),
        Quote(contents: "명언 내용 E", name: "명언자 E")
    ]
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }

    @IBAction func tapQuotesGenertorButton(_ sender: Any) {
        // 랜덤 난수 코드 발생
        let random  =   Int(arc4random_uniform(5))   // 0 ~ 4 사이의 난수를 랜덤하게 만들어줌
        let quote = quotes[random]
        self.quotLabel.text = quote.contents
        self.nameLabel.text = quote.name
        
    }

}

 

 

 

 

반응형
Comments