Ich muss eine Popup-Ansicht mit einem UILabel
und einem UISlider
hinzufügen, aber ich habe Probleme bei der Einstellung der Breite des UISlider
.UISlider Layout ignorieren Breite
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
frontPanel = UIView()
frontPanel!.backgroundColor = UIColor.whiteColor()
frontPanel!.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(frontPanel!)
valueSlider = UISlider()
valueSlider!.translatesAutoresizingMaskIntoConstraints = false
valueSlider!.frame = CGRect(x: 0,
y: 0,
width: frontPanel!.frame.width - 16,
height: 35)
sliderLabel = UILabel()
sliderLabel!.translatesAutoresizingMaskIntoConstraints = false
sliderLabel!.text = "Adjust value"
let frontPanelSubviews: [String : AnyObject] = [
"label" : sliderLabel!,
"slider" : valueSlider!
]
frontPanel!.addSubview(sliderLabel!)
frontPanel!.addSubview(valueSlider!)
frontPanel?.addConstraints(
NSLayoutConstraint.constraintsWithVisualFormat("V:|-[label]-[slider]-|",
options: [],
metrics: nil,
views: frontPanelSubviews)
)
frontPanel?.addConstraints(
NSLayoutConstraint.constraintsWithVisualFormat("H:|-[label]-|",
options: [],
metrics: nil,
views: frontPanelSubviews)
)
frontPanel?.addConstraints(
NSLayoutConstraint.constraintsWithVisualFormat("H:|-[slider]-|",
options: [],
metrics: nil,
views: frontPanelSubviews)
)
}
override func viewDidLayoutSubviews() {
frontPanel?.frame = CGRect(x: 0,
y: view.frame.height - 75,
width: view.frame.width,
height: 75)
}
@IBOutlet weak var backPanel: UIView!
@IBOutlet weak var valueLabel: UILabel!
var frontPanel: UIView?
var valueSlider: UISlider?
var sliderLabel: UILabel?
}
In diesem Beispiel wird die UISlider
immer die gleiche Breite wie die UILabel
bekommen.
Wenn ich nur ein horizontales Layout contraint wie H:|-[label]-[slider]-|
die UISlider
bekommt width == 0
.
Wie kann ich die UISlider
verwenden die volle Breite der übergeordneten Ansicht (minus der 8 Punkte Platz auf jeder Seite)?