포스트

BMI Calculator (1)

UI Slider의 값을 미리 설정 해줄 수 있다.

slider가 움직일때 console에서 값이 변하도록 만들어 보자.

먼저 IBAction을 만들어 준다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var maximum : Double = 0.0
var minimum : Double = 0.0
    
var currentValue : Double = 0.0
    

    @IBAction func heightSliderChanged(_ sender: UISlider) {
        currentValue = Double(sender.value)
        print(currentValue)
    }
    
    
    @IBAction func weightSliderChanged(_ sender: UISlider) {
        currentValue = Double(sender.value)
        print(currentValue)
    }
    

이렇게 코드를 작성하였다.

계속 프린트가 되는 건데 내가한것과는 다르다..

코드차이는 없었다 그냥 창이 어떻게 보여지느냐의 차이였다.

그렇다면 소숫점을 둘째자리까지만 나오게 해보자.

1
2
3
4
5
6
7
8
9
10
@IBAction func heightSliderChanged(_ sender: UISlider) {
        currentValue = Double(sender.value)
        print(String(format:"%.2f", currentValue))
    }
    
    @IBAction func weightSliderChanged(_ sender: UISlider) {
        currentValue = Double(sender.value)
        print(String(format:"%.2f", currentValue))
    }

소수점이 안나오게하기위해 Int를 씌웠다.

1
2
3
4
 @IBAction func weightSliderChanged(_ sender: UISlider) {
        currentValue = Double(sender.value)
        print(Int(currentValue))
    }

값을 변할때 console이 아닌 label에 값이 표시가 되게 구현해보자

1
2
3
4
5
6
7
8
9
10
11
12
13
@IBAction func heightSliderChanged(_ sender: UISlider) {
        currentValue = Double(sender.value)
        
        heightLabel.text = String(format:"%.2f", currentValue)
        //print(String(format:"%.2f", currentValue))
    }
    
@IBAction func weightSliderChanged(_ sender: UISlider) {
        currentValue = Double(sender.value)
        
        weightLabel.text = String(Int(currentValue))
        //print(Int(currentValue))
    }

뭐 이정도는 가볍지.

위와 아래 통일성을 주기위해 수정을 해보자 (String(format:”%.2f”, currentValue)) (String(Int(currentValue))

-> (String(format:”%.0f”, currentValue))

하지만 처음에는 m / kg같은 단위가 있는데 수치만 나온다.

단위도 나오게 수정을 해보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
 @IBAction func heightSliderChanged(_ sender: UISlider) {
        currentValue = Double(sender.value)
        
        heightLabel.text = "\(String(format:"%.2f", currentValue))m"
        //print(String(format:"%.2f", currentValue))
    }
    
@IBAction func weightSliderChanged(_ sender: UISlider) {
        currentValue = Double(sender.value)
        
        weightLabel.text = "\(String(format:"%.0f", currentValue))Kg"
        //print(Int(currentValue))
    }

끝.


현재 slider들을 움직이고 calculate버튼을 누르면 현재 위치한 슬라이더의 값이 나오게 해보자.

가장 쉬운 방법은 slider들의 IBoutlet을 생성해주고 그 value를 바로 찍어내면 된다.

1
2
3
4
 @IBAction func calculatePressed(_ sender: UIButton) {
        print(heightSlider.value)
        print(weightSlider.value)
    }

위에 주어진 식을 이용하여 BMI를 출력해보자.

1
2
let bmi = weight / (height * height)
let bmi = weight / pow(height,2)

둘은 같은 표현이다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.