如何修改 UIScrollView 中 UIImageViews 子视图的位置?

Posted

技术标签:

【中文标题】如何修改 UIScrollView 中 UIImageViews 子视图的位置?【英文标题】:How to modify the position of UIImageViews subviews inside a UIScrollView? 【发布时间】:2011-09-01 15:32:46 【问题描述】:

我试图在 UIImageViews 之间创建间隙,这是添加到 UIScrollView 中的子视图。

我认为我可以通过修改 UIImageView 的 CGRect 来做到以下几点。 CGRect frame = imageView.frame;

frame.origin.x = <some values>
frame.origin.y = 0
imageView.frame = frame;

通过修改 x 值,我认为它可以帮助我确定 UIScrollView 中 UIImageViews 的位置。

但是,我意识到我为 frame.origin.x 设置的值并不重要。由于 UIScrollView 中的每个 UIImageView 都将并排放置,没有任何空白。

【问题讨论】:

我会仔细检查你的 frame.size.width。设置 frame.origin.x 是正确的方法。也许 UIImageViews 仍然重叠? 我所有的 frame.size.width 都返回相同的值。与 UIImageViews 重叠的 frame.size.width 是否重叠? frame.size.width 不就是 CGRect 的宽度吗? 【参考方案1】:

我认为你做错了。您不能通过

编辑视图的位置
view.frame.origin.x = something;

您应该分配一个新框架,如下所示:

view.frame = CGRectMake(x, y, w, h);

在你的情况下,它看起来像这样:

CGRect frame = imageView.frame;
CGFloat frameX = frame.origin.x;
CGFloat frameY = frame.origin.y;
CGFloat frameW = frame.size.width;
CGFloat frameH = frame.size.height;

frameX = <some values>
frameY = 0;

imageView.frame = CGRectMake(frameX, frameY, frameW, frameH);

【讨论】:

嗨@Kashiv,我照你说的做了。还做了一个 CGRect 的 NSLog,它反映了我为每个 UIImageView 生成的 x 坐标。 嗨@Kashiv。谢谢你。我明白了,为了让我的问题变得更糟,我什至有一种方法可以在我添加你的代码之后开始重新排列我的视图。

以上是关于如何修改 UIScrollView 中 UIImageViews 子视图的位置?的主要内容,如果未能解决你的问题,请参考以下文章

将 UIImageView 添加到 UIButton

UIScrollView的减速率可以修改吗?

键盘可见的 UIScrollView

Swift实现修改UITableView,UIScrollView滚动条颜色

使用自动布局在 UIScrollView 中使用浮动视图滚动犹豫

如何使在Swift中使用UIScrollView进行滚动和缩放