iOS Swift - 带有滑块的移动图像

Posted

技术标签:

【中文标题】iOS Swift - 带有滑块的移动图像【英文标题】:iOS Swift - moving image with slider 【发布时间】:2016-06-12 10:44:41 【问题描述】:

我在使用滑块移动 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)

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

【问题讨论】:

你是否对 imageView 使用了约束? 不,我什至删除了整个图像并重新添加它......完全没有效果 好的,什么时候跳回来?就在释放滑块之后或者如果您更改滑块位置? 释放滑块后不久 嗯...而且您的打印还打印出该值等于 viewCenter? 【参考方案1】:

除非您在 nib/storyboard 中取消选中“使用 AutoLayout”复选框,否则您正在使用 AutoLayout,因此如果您不使用,系统会为您的视图添加约束。

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

您要么需要为整个 nib/storyboard 关闭 AutoLayout,要么将 outlets 添加到约束并更改约束的常量值,然后在视图上调用 layoutIfNeeded() 以使约束更改生效.

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

【讨论】:

第三个选项是在代码中创建UIImageView,而不是在情节提要中放置它。然后 Auto Layout 就不会碰它了,你可以用它的框架来移动它。 问题是由自动布局引起的。谢谢朋友! 你最终使用了什么解决方案?

以上是关于iOS Swift - 带有滑块的移动图像的主要内容,如果未能解决你的问题,请参考以下文章

iOS滑块的默认拇指图像大小?

jQuery滑块:颜色更改菜单不会与滑块的其余部分同步

根据滑块的值更改 UI 中的图像

如何使用带有缩略图滑块的光滑滑块创建自定义滑块?

每个滑块的单独边框

如何将另一个图像添加到滑块的拇指或如何添加两个拇指图像?