我正尝试从滑块获取值并将其存储在变量中,然后更改两个正方形的大小,如下面的代码所示。我正在更新years
变量,但是由于某种原因,mfProportion
和ifProportion
变量没有更新,因为正方形的大小没有变化。如果有人可以看一下,让我知道我哪里出了问题,我将非常感激。谢谢。
import UIKit
class ViewControllerX: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print("showing index vs mutual box view")
addSquares()
}
func addSquares() {
let x = Double(self.view.center.x)
let y = Double(self.view.center.x)
let years:Double = 1
//let mfDollarReturn:Double = pow(1.078, years)
//let ifDollarReturn:Double = pow(1.098, years)
//let bankDollarReturn:Double = pow(1.017, years)
let mfProportion:Double = ((pow(1.078, years))/(pow(1.098, years)))
let savingsProportion:Double = ((pow(1.017, years))/(pow(1.098, years)))
view.backgroundColor = UIColor.white
let indexSquare = UILabel(frame: CGRect(x: 0, y: 0, width: 250, height: 250))
indexSquare.text = ""
indexSquare.center = CGPoint(x: x, y: y)
indexSquare.backgroundColor = UIColor.green
view.addSubview(indexSquare)
let indexSquareArea:Double = (250*250)
let mutualSquareDimension:Double = pow((indexSquareArea * mfProportion), 0.500)
let mutualSquare = UILabel(frame: CGRect(x: 0, y: 0, width: mutualSquareDimension, height: mutualSquareDimension))
mutualSquare.center = CGPoint(x: x-(125.00-mutualSquareDimension/2.00), y: y+(125.00-mutualSquareDimension/2.00))
mutualSquare.backgroundColor = UIColor.yellow
view.addSubview(mutualSquare)
let bankSquareDimension:Double = pow((indexSquareArea * savingsProportion), 0.500)
let bankSquare = UILabel(frame: CGRect(x: 0, y: 0, width: bankSquareDimension, height: bankSquareDimension))
bankSquare.center = CGPoint(x: x-(125.00-bankSquareDimension/2.00), y: y+(125.00-bankSquareDimension/2.00))
bankSquare.backgroundColor = UIColor.red
view.addSubview(bankSquare)
slider.center = CGPoint(x: self.view.center.x, y: self.view.center.y * 1.5)
slider.maximumValue = 100
slider.minimumValue = 1
slider.value = 1
view.addSubview(slider)
slider.addTarget(self, action: #selector(changeValue), for: .touchUpInside)
}
let slider = UISlider(frame: CGRect(x: 0, y: 0, width: 300, height: 5))
@objc func changeValue() {
let years = Int(slider.value)
print(years)
}
}
答案 0 :(得分:0)
此处设置let years = Int(slider.value)
不会更改正方形的大小,您需要根据新值重新设置帧
@objc func changeValue() {
let years = Int(slider.value)
print(years)
// change frames again
}
因此,我强烈建议您创建一个函数,将各项添加为子视图,另外一个函数则根据year
值更改框架,然后从viewDidLoad
和changeValue
中使用{{ 1}}值作为参数