IOS 6 to Swift2 update Slider



有没有人能在这段代码中帮助我
它是一个滑块,用于更改标签中字体的大小。这在IOS6中有效,但我正在尝试在Swift 2上运行。
提前感谢。

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()
    }
}

请尝试以下示例(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))"
    }
}

如果您使用情节串连板

  • 将UISlider和UILabel添加到情节板上的视图控制器场景
  • 为每个控件插入@IBOutlet s(要编码的情节提要上控件中的Ctrl+Drag,从Connection列表中选择Outlet
  • 为滑块的Value Changed事件插入@IBAction(要编码的情节提要上滑块控件中的Ctrl+Drag,从Connection列表中选择Action

你可能会得到这样的结果:

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))"
    }
}

最新更新