滑动弹出使图像抖动

Posted

技术标签:

【中文标题】滑动弹出使图像抖动【英文标题】:Swipe to pop makes images jittery 【发布时间】:2016-02-15 10:41:37 【问题描述】:

当我从带有图像的视图控制器向另一个视图控制器执行滑动以弹出手势时,消失的视图(1px 白线)中出现了抖动的故障。我正在使用系统滑动 UIGesture。 关于如何解决这个问题的任何想法?谢谢!

查看层次结构

+ Scroll View (container)
| - ContentView
| - - Header Image
| - - Title Label
| - - Author/ Date Label
| - - Post Content

约束

        |
|-[Header Image]-|
        |
|-[Title Label]-|
        |
|-[Author/ Date Label]-|
        |
|-[Post Content]-|
        |

【问题讨论】:

要明确一点,白线是一直停留在那里,还是忽隐忽现?如果是这样,我不久前也遇到了同样的问题.. 白线出现并闪烁消失。 你能打印整个视图层次吗?也许 zagg-image 位于 0.5? 你使用约束吗?您是否以编程方式添加图像?解释更多,以便我们回答。 @Zazu 我正在使用自动布局,所以整个布局都是基于约束的。 【参考方案1】:

你需要描述整个场景

1-您需要确保图像中没有空像素列,曾几何时,一位设计师给我提供了一个这样的空像素背景图像,我在Photoshop中将其删除。

不管怎样,你提到你使用了约束

2-尝试使约束因子为1.01或1.02

请告诉我们更多信息,以便我们提供帮助。

【讨论】:

【参考方案2】:

我不确定为什么会发生这种情况,但可以通过将图像视图 x 位置定位到 -1 而不是 0 来解决。

更新……

这是因为图像大小无法正确缩放到图像视图大小。

例如:如果图像尺寸宽度为 750 并且尺寸为 375、750、1500 的图像将正常工作。如果您尝试设置大小为 370、300 等的图像,则会出现此问题。

因此,请确保您的图片尺寸合适。

【讨论】:

知道如何正确缩放图像吗? 我在回答中提到,这可以通过将图像视图 x 位置定位到 -1 而不是 0 来解决,或者您已经创建了适当大小的图像。 我尝试了您的第一个解决方案,但似乎无法正常工作。我从 Wordpress API 获取图像,因此无法请求尺寸合适的图像。 下载任意大小的图片,创建所需大小的图片。请参阅***.com/questions/17018617/… 以创建所需大小的图像。 另一个技巧是使用与 imageView.backgroundColor = UIColor(patternImage: image) 相同的图像设置图像视图背景颜色。如果您的图像没有任何 Alpha 通道,这将起作用。【参考方案3】:

如果 Arun Ammayana 提出的所有技巧都不起作用,则问题可能出在 ContentView 上。 ContentView 上有哪些约束?

我通常将 View 作为滚动视图的容器,并将内部容器视图的宽度设置为外部。如果这不能解决它,您可以尝试设置

内视图宽度 = 外视图宽度 + 2 和 内视图 x = 外视图 x - 1

像这样,您应该在两种尺寸上都获得 +1。

【讨论】:

【参考方案4】:

最后我解决了这个问题。 解决方案结合了@Arun Ammannaya 提出的建议和大量的反复试验。

解决方案

我将滚动视图向左移动了 2px,并将属性 Clip Subviews 添加到主视图中。

我认为问题是由于滑动弹出手势使用的平移手势错误四舍五入造成的。

【讨论】:

【参考方案5】:

我认为您的图像比例不适合您的图像视图。 您可以尝试更改您的 imageView 的 contentMode 吗?

  headerImageView.contentMode = UIViewContentMode.ScaleAspectFill

【讨论】:

这不是 OP 描述的问题

以上是关于滑动弹出使图像抖动的主要内容,如果未能解决你的问题,请参考以下文章

jquery滑动出现闪屏,抖动现象

图像不会在轨道滑块基础上滑动

ionic 3 图像滑块在手动滑动后停止自动播放

如何在 presentViewController 之后禁用 SFSafariViewController 中的滑动手势

如何从“滑动滑块同步”中删除滑块导航并显示缩略图?

Flutter:在 iOS 和 Android 中禁用滑动导航返回