简体   繁体   中英

IOS 6 to Swift2 update Slider

any chance someone to help me in this code?
it is a Slider that changes the size of the Fonts in a Label. this worked in IOS6 but I am trying to run on Swift 2.
Thanks in advance.

import UIKit

class ViewController: UIViewController {

    @IBAction func defaultSlider1(sender: UISlider) {

        UISlider *slide = (UISlider *)sender;
        int fonts = (int)(slide.value);
        NSString *newtext = NSlog("%d", fonts);
        label.font = [UIFont systemFontOfSize:fonts];
        label.text = newtext;

    }
    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

Please try following example ( Demo ):

import UIKit

class ViewController: UIViewController {


    private var slider: UISlider!
    private var label: UILabel!

    private let minimumFontSize: Float = 16
    private let maximumFontSize: Float = 48


    override func viewDidLoad() {
        super.viewDidLoad()

        let width: CGFloat  = view.bounds.width / 2
        let height: CGFloat = 44.0

        let size    = CGSize(width: width, height: height)
        let origin  = CGPoint(x: self.view.center.x - (width / 2), y: self.view.center.y)

        createSlider(origin, size: size)
        createLabel(origin, size: size)
        sliderAction()
    }

    func createSlider(origin: CGPoint, size: CGSize) {

        let frame = CGRect(origin: origin, size: size)

        self.slider = UISlider(frame: frame)
        self.slider.addTarget(self,
            action: Selector("sliderAction"),
            forControlEvents: UIControlEvents.ValueChanged)

        self.slider.minimumValue = minimumFontSize
        self.slider.maximumValue = maximumFontSize

        view.addSubview(self.slider)
    }

    func createLabel(origin: CGPoint, size: CGSize) {
        let labelOrigin = CGPoint(x: origin.x, y: origin.y + size.height)
        let frame = CGRect(origin: labelOrigin, size: size)

        self.label = UILabel(frame: frame)
        self.label.textAlignment = NSTextAlignment.Center

        view.addSubview(self.label)
    }

    func sliderAction() {
        let fontSize = CGFloat(self.slider.value)

        self.label.font = UIFont.systemFontOfSize(fontSize)
        self.label.text = "\(Int(fontSize))"
    }

}

In case you're using Storyboards :

  • Add UISlider and UILabel to your View Controller Scene on the Storyboard
  • Insert @IBOutlet s for each control ( Ctrl+Drag from the control on the Storyboard to code, choose Outlet from Connection list)
  • Insert @IBAction for slider's Value Changed event ( Ctrl+Drag from the slider control on the Storyboard to code, choose Action from Connection list)

You may end up with something like:

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var slider: UISlider!
    @IBOutlet weak var label: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()

        self.slider.minimumValue = 16
        self.slider.maximumValue = 48

        self.sliderAction()
    }

    @IBAction func sliderValueChangedAction(sender: UISlider) {
        self.sliderAction()
    }

    private func sliderAction() {
        let fontSize = CGFloat(self.slider.value)

        self.label.font = UIFont.systemFontOfSize(fontSize)
        self.label.text = "\(Int(fontSize))"
    }

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM