2016-06-12 59 views
0

使用滑块移动UIImageView时会出现一些问题。这是我目前使用我的代码:iOS Swift - 使用滑块移动图像

@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) 

其实,我可以将图像与此代码移动,但不知怎地,图像总是“跳”回它在屏幕中间原点位置,不移动滑块......你有什么想法,这是怎么发生的?我已经检查了右侧的检查器,可能会导致这种效果,但没有运气......

+0

您是否对imageView使用约束? –

+0

不,我甚至删除了整个图像,并新增了它......没有任何影响 –

+0

好吧,它什么时候跳回来?刚刚释放滑块后,或者如果您更改滑块位置? –

回答

0

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

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

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

我建议增加网点的约束。切换到老式的struts-and-spring风格的表单设计是一个很大的改变,并且会对你的视图控制器产生很大的副作用。 (我个人认为更喜欢 struts-and-springs样式的表单设计,但我强迫自己使用AutoLayout,因为这是一种新的处理方式。)

+0

第三种选择是在代码中创建“UIImageView”,而不是将它放在故事板中。然后*自动布局*不会触摸它,你可以移动它的框架。 – vacawama

+0

问题是由自动布局引起的。 Thx队友! –

+0

你最终使用了什么解决方案? –