ios - 当我改变它的框架时,UISlider 没有改变它的宽度 - ios Swift

标签 ios swift uislider

我已经使用 Storyboard创建了一个 slider ,现在我正在尝试使用 viewDidLoad() 方法中的这段代码更改它的宽度:

var parentFrame:CGRect = self.view.frame
var currentFrame:CGRect = timeSlider.frame    // timeSlider is IBOutlet variable
timeSlider.frame = CGRect(x: currentFrame.origin.x + 20, y: currentFrame.origin.y, width:parentFrame.size.width, height: currentFrame.size.height)

但 slider 宽度或位置没有改变,我不想以编程方式创建新的 UISlider,我想使用现有的 Outlet 并在运行时更改其宽度。那么有什么想法为什么这段代码不起作用?

附言- 实际上我想根据设备大小更改 slider 宽度,但想将 UISlider 保留在 Storyboard 中(不想在 viewDidLoad 中以编程方式创建它,它也应该支持 iOS 7 吗?)

根据 Apple documentation当我改变框架时它应该自动更新 View ..

最佳答案

最后通过在设置框架之前添加这一行解决了这个问题:

timeSlider.setTranslatesAutoresizingMaskIntoConstraints(true)

实际上我没有添加任何自动布局约束,但是它在运行时自动添加了这个约束,所以必须添加这个,但是在添加这行之后我收到警告'cannot simultaneously satisfy multiple constraints...',因此必须删除 viewDidLoad 中的所有约束。
所以最终的工作代码没有任何警告:

var parentFrame:CGRect = self.view.frame
var currentFrame:CGRect = timeSlider.frame
self.view.removeConstraints(self.view.constraints())
timeSlider.setTranslatesAutoresizingMaskIntoConstraints(true)
timeSlider.frame = CGRect(x: currentFrame.origin.x, y: currentFrame.origin.y, width:parentFrame.size.width - 14, height: currentFrame.size.height)

我仍然不明白为什么它要添加自动布局约束,即使我已经删除了所有约束,但无论如何上面的代码解决了这个问题..

关于ios - 当我改变它的框架时,UISlider 没有改变它的宽度 - ios Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27356685/

相关文章:

ios - swift 3 : Cannot automatically unwrap optional before setting it to Label

ios - 消息配置文件 "iOS Team Provisioning Profile: *"将在 15 天后过期

ios - iOS 上的 assertUnfrozen

ios - 以一定的速度在屏幕上随机移动物体

swift - 如何将UISlider的滑动限制在某个点?

ios - UISlider 导致水平滚动

iphone - 使用 UISlider 在 MKMapView 上将半径更改为 MKCircle

objective-c - 数组、内存管理

iOS - Alamofire v2 Basic Auth 不工作

从 mach_timebase_info() 创建一个结构