🔰Slider label position

╱🚧 under construction

SwiftUIcontrolsSlider ⟩ label position

設定 Slider 數值標籤到滑桿調鈕上方

💈範例:計算標籤位置的不同方法

方法 1:使用固定寬度Slider

  • 優點容易計算數值標籤的偏移量。

  • 缺點:寬度固定,適應性差

Slider 1 程式碼重點解說:

  1. .background 負責將子視圖 (Text) 置中對齊 (Text中心點放在背景正中央)。

  2. 計算 Text偏移量時,須中央為基準

  3. .offset() 偏移 Text

// view properties
@State var t: CGFloat = 0.5
let sliderWidth: CGFloat = 300                  // ⭐️ 滑桿寬度

// view body 
// slider(fixed width) > background > text
Slider(value: $t)
    // ⭐️ 1. `.background` 負責將子視圖「置中對齊」
    .background {
        let knobWidth: CGFloat = 28             // 滑桿調鈕寬度
        let knobRange = sliderWidth - knobWidth // 調鈕活動範圍寬度
        
        // ⭐️ 2. 因為 Text 會被 .background 置中對齊
        //       所以計算偏移量時,須以中央為基準。
        let xOffset = (t-0.5) * knobRange       // 數值標籤偏移量
        
        // ⭐️ 3. 用 .offset() 偏移 Text。
        Text("\(t, specifier: "%.2f")")
            .offset(x: xOffset, y: -30)
    }// background
    .frame(width: sliderWidth)                  // ⭐️ 寬度固定

Last updated

Was this helpful?