iOS Swift - 带滑块

时间:2016-06-12 10:44:42

标签: ios swift uiimageview uislider

使用滑块移动UIImageView时遇到一些问题。这是我目前正在使用的代码:

@IBOutlet weak var titanic: UIImageView!

...

let screenWidth = UIScreen.mainScreen().bounds.width
let titanicWidth = titanic.bounds.size.width
let viewcenter = titanicWidth / 2
let slidervalue = CGFloat(sender.value)
let value = (screenWidth * slidervalue * (1.0 - titanicWidth / screenWidth)) + viewcenter
titanic.center.x = CGFloat(value)
print(value)

实际上,我可以使用此代码移动图像,但是:不知何故,图像总是"跳跃"回到它在屏幕中间的原点位置,根本没有移动滑块......你有什么想法,这怎么可能发生?我已经检查了右侧的检查员是否有一些可能导致这种影响的奇怪属性,但没有运气......

1 个答案:

答案 0 :(得分:0)

除非你取消选中"否则使用AutoLayout"您的笔尖/故事板中的复选框,您正在使用AutoLayout,因此如果您不这样做,系统会为您的视图添加约束。

使用AutoLayout时,您无法直接修改视图的边框/边界/中心,或者完全修改您描述的内容。下一次触发布局更新时,视图会快速回到由其约束定义的位置。

您需要为整个笔尖/故事板关闭AutoLayout,或者为约束添加出口并更改约束的常量值,然后在视图上调用layoutIfNeeded()以使约束更改生效。

我建议在约束中添加出口。切换到较旧的样式struts-and-spring样式表单设计是一个很大的改变,并且会给视图控制器带来很大的副作用。 (我个人非常喜欢 struts-and-spring风格的表单设计,但我强迫自己使用AutoLayout,因为这是新的做事方式。)