読者です 読者をやめる 読者になる 読者になる

Swiftでスライダーサンプル

Swiftでスライダーを動かすと値が変わるだけのアプリを作ってみる。

実行環境 : iOS9.2
開発環境 : XCode7.2

//
//  ViewController.swift
//  Slider
//


import UIKit

class ViewController: UIViewController {
    
    
    var myLabel: UILabel!
    
    override func viewDidLoad() {
        super.viewDidLoad()

        // 背景を白に
        self.view.backgroundColor = UIColor.whiteColor()
        
        // スライダーを作成する
        let mySlider = UISlider(frame: CGRectMake(0,0,250,30))
        mySlider.layer.position = CGPointMake(self.view.bounds.midX, 600)
        mySlider.backgroundColor = UIColor.whiteColor()
        mySlider.layer.cornerRadius = 10.0
        mySlider.layer.masksToBounds = false
        
        // スライダーの最小値と最大値を設定
        mySlider.minimumValue = 0
        mySlider.maximumValue = 1
        
        // スライダーの位置
        mySlider.value = 0.5
        
        // スライダーの現在位置より左右の色を変える
        mySlider.maximumTrackTintColor = UIColor.grayColor()
        mySlider.minimumTrackTintColor = UIColor.blackColor()
        
        // スライダーの値が変更される毎に"onChangeValueMySlider"メソッドが呼ばれる
        mySlider.addTarget(self, action: "onChangeValueMySlider:", forControlEvents: UIControlEvents.ValueChanged)
        
        // ビューの設定
        self.view.addSubview(mySlider)

        // UILabelを作成
        myLabel = UILabel(frame: CGRectMake(0,0,100,60))
        myLabel.backgroundColor = UIColor.orangeColor()
        myLabel.text = "Value:".stringByAppendingFormat("%.1f", mySlider.value)
        myLabel.textAlignment = NSTextAlignment.Center
        myLabel.layer.masksToBounds = true
        myLabel.layer.cornerRadius = 20.0
        myLabel.layer.position = CGPoint(x: self.view.bounds.width/2, y: self.view.bounds.height/2-20)
        self.view.addSubview(myLabel)
    }
    
    // スライダーの値が変わった時に呼ばれるメソッド
    internal func onChangeValueMySlider(sender: UISlider) {
        myLabel.text = "Value:".stringByAppendingFormat("%.1f", sender.value)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}