我正在使用Swift 3
和Xcode 8.2。
在斯威夫特很新。
我有一个水平UISlider
来控制音量从1到16作为最小值和最大值,当我执行print()
时它会返回浮点值。如何将其值限制为整数?
@IBOutlet var ringValue: UISlider!
@IBAction func ringVolumeSliderChange(_ sender: UISlider)
{
print(sender.value)
}
提前致谢!
答案 0 :(得分:14)
UISlider
的{{1}}属性属于Float
类型,因此您无法对其进行更改,但可以使用Int
将其转换为Int(sender.value)
。
@IBAction func ringVolumeSliderChange(_ sender: UISlider) {
print(Int(sender.value))
}
答案 1 :(得分:7)
如果您希望Slider仅在步骤中定位:
@IBAction func ringVolumeSliderChange(_ sender: UISlider)
{
sender.setValue(sender.value.rounded(.down), animated: true)
print(sender.value)
}
在此示例中,我假设您已设置最小值和最大值。现在,当用户滑动时,滑块会从一个位置跳到另一个位置。
答案 2 :(得分:3)
static void print()
{
// store in static array to compile faster
std::vector<T> args = {list...};
// use for idiom for each except the last, but this time in reserve way
// assgn char* space to empty char first
const char* space = "";
if (sizeof...(list) == 0)
{
// simple just call space to cout , if not warning no variable used
std::cout <<'"' <<"Empty List" <<'"' << space <<std::endl;
}
else if (std::is_same<T, char>::value)
{
std::cout << '"';
for (auto const& elem : args)
{
std::cout << space << elem;
}
std::cout << '"' << space<< std::endl;
}
else
{
std::cout << '"';
for (auto const& elem : args)
{
std::cout << space << elem;
space = " ";
}
std::cout << '"' << std::endl;
}
}
答案 3 :(得分:1)
我有一个水平UISlider来控制音量从1到16为min 和最大值...
默认情况下,value
属性的最小值为0.0,最大值为1.0。
如果你想根据滑块值得到1到16之间的整数,你应该使用额外的简单数学做@NiravD suggested:)
@IBAction func ringVolumeSliderChange(_ sender: UISlider) {
print(Int((sender.value * 15).rounded()) + 1)
}
将其设为print(Int(sender.value))
,如果滑块达到其最大值(1.0),则打印1,所有其他值小于1.0将打印为0。
答案 4 :(得分:1)
要使滑块更流畅并且一次取一个结果(当用户停止滑动时),您可以在viewDidLoad
内使用此行:
ringValue.isContinuous = false
然后你可以选择如何处理我喜欢jboi答案的其他答案之一的结果,这样就会得到离散值。
答案 5 :(得分:0)
var slideValue: String = "0"
@objc private func didSliderValueChanged(_ sender: UISlider) {
let formattedValue = String(format: "%.0f", sender.value)
if let floatValue = Float(formattedValue) {
sender.value = floatValue
}
guard formattedValue != slideValue else {
return
}
//This part is optional, and can make slider more interactive
UIImpactFeedbackGenerator(style: .medium).impactOccurred()
slideValue = formattedValue
}
答案 6 :(得分:0)
SwiftUI
@State private var diameter: Double = 10
var body: some View {
HStack {
Slider(value: $diameter, in: 0...100)
Text("\(Int(diameter))")
}
}