Swift: UISlider одна сторона дорожки не закруглена - PullRequest
0 голосов
/ 28 января 2020

У меня есть пользовательский UISlider, но есть сторона ползунка, которая не округлена enter image description here

Вот мой пользовательский вид:

class PrimarySliderView: UISlider {

    override init(frame: CGRect) {
        super.init(frame: frame)
        setup()
    }

    required init?(coder: NSCoder) {
        super.init(coder: coder)
        setup()
    }

    override func trackRect(forBounds bounds: CGRect) -> CGRect {
        return CGRect(origin: bounds.origin, size: CGSize(width: bounds.width, height: 6))
    }

    func setup() {
        tintColor = .cornFlowerBlue
    }

Как округлить также и правую сторону?

РЕДАКТИРОВАТЬ

Ползунок обрезается, потому что мое приложение RTL, когда я корректно переключаю на LTR этот дисплей, но не в RTL, как решить эту проблему?

В моем AppDelegate я форсирую RTL:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        UIView.appearance().semanticContentAttribute = .forceRightToLeft

        return true
    }

Ответы [ 2 ]

3 голосов
/ 28 января 2020

Либо вам необходимо добавить округленное изображение для минимального и максимального трека, либо вы можете создать округленное изображение, используя цвета

, другой обходной путь -

override func layoutSubviews() {
          super.layoutSubviews()

        self.layer.sublayers![1].cornerRadius = 10

    }

enter image description here

1 голос
/ 28 января 2020

попробуйте это

if(UIApplication.sharedApplication().userInterfaceLayoutDirection == UIUserInterfaceLayoutDirection.RightToLeft)
{
   uiSlider.transform = CGAffineTransformMakeScale(-1.0, 1.0);
}
...