gpt4 book ai didi

ios - 在更改其嵌套的 UILabel 的同时移动 UIView 会导致 View 跳回到初始位置

转载 作者:行者123 更新时间:2023-11-29 00:52:23 24 4
gpt4 key购买 nike

我正在尝试设置一个 UISlider,以便在移动 slider 时,拇指矩形上方会出现一个气泡,以显示当前值的设置。

单独移动 View 效果很好,但是当更改该 View 内标签的值时,标签会快速“跳”回我在 Storyboard上放置 UIView 的初始位置,当 slider 到达某个位置时轨道上的点。一旦拇指矩形移动超过轨道上的 1 个像素,它就会跳回来。

我制作了一个示例项目来复制这里的问题:https://github.com/austinmckinley/SliderBubbleTest

或者,这就是我的 ViewController 的样子。

import UIKit

class ViewController: UIViewController {
@IBOutlet weak var slider: UISlider!
@IBOutlet weak var bubble: UIView!
@IBOutlet weak var bubbleLabel: UILabel!

override func viewDidLoad() {
super.viewDidLoad()
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

@IBAction func sliderMoved(sender: UISlider) {
let sliderValue = lroundf(sender.value)

let trackRect = sender.trackRectForBounds(sender.frame)
let thumbRect = sender.thumbRectForBounds(sender.bounds, trackRect: trackRect, value: Float(sliderValue))
bubble.center.x = thumbRect.midX

slider.value = Float(sliderValue)

// If this next line is commented, the jumping issue does not occur.
bubbleLabel.text = String(sliderValue)
}
}

最佳答案

自动布局正在将气泡 View 移回到其约束指定的位置。不要更改气泡 View 的框架,而是为水平放置气泡的 NSLayoutContraint 创建一个 @IBOutlet,然后更改 constant 属性移动气泡的约束。

如果您将气泡的水平约束设置为:Bubble.CenterX == Superview.Leading,并将约束导出添加到您的代码中:

@IBOutlet weak var bubbleCenterX: NSLayoutConstraint!

然后你只需要替换这个:

bubble.center.x = thumbRect.midX

与:

bubbleCenterX.constant = thumbRect.midX

关于ios - 在更改其嵌套的 UILabel 的同时移动 UIView 会导致 View 跳回到初始位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37974025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com