目标:有一个滚动视图,显示可以水平滚动它们的uiimageviews(照片)数组
我理解这样做:将每个uiimageview的框架(CGRect)设置为滚动视图的高度和宽度,每个/custom/foo/:id
值为0,并设置第一个imgViews <?php $query_product = mysql_query("SELECT * FROM products WHERE status = '1' AND language_parent_id = '0' AND id = '".$row_product_id['product_id']."' ORDER BY sort_order");
$row_product = mysql_fetch_array($query_product);
$imageFile = HTTP_RESIM.'products/'.$row_product['image'];
?>
<section class="flexslider">
<ul class="slides">
<?php $imageFile = HTTP_RESIM.'products/'.$row_product['image'];
$query_resim = mysql_query("SELECT * FROM product_image WHERE product_id = '".$row_product['id']."' AND status = '1' ORDER BY sort_order");
while($row_product_resim = mysql_fetch_array($query_resim)){ ?>
<?php $imageFile2 = HTTP_RESIM.'product_image/'.$row_product_resim['image']; ?>
<li><?php echo "<a href=\"$imageFile2\" rel=\"fancybox-gallery\" ><img src=\"$imageFile\" /></a>"; ?> </li>
<?php } ?>
</ul>
</section>
将值设置为0.对于之后的每个imgView,将scrollview的宽度添加到x值。理论上,这会将imgViews(照片)水平排列在一起,不允许任何垂直滚动或缩放,纯粹是水平照片查看器。
故事板设置:我在xib文件中创建了我的scrollview(它是一个自定义的uiCollectionViewCell),具有以下约束: - 单元格的顶部空间(0) - 到单元格的尾随空格(0) - 领先的空间到单元格(0) - 身高400 - 底部空间到视图(0) - (见下文img)
布置UIImgViews:
y
我怀疑:我怀疑这个问题源于我指定的自动布局限制,但是(考虑到我问一个问题)不确定
如果有更好的方法(真的是正确的方法),请告诉我!我一直试图绕过这个问题几天。
编辑#1 我尝试了设置setNeedsLayout&amp;的paulvs方法。 layoutIfNeeded在“for”循环之前,仍然没有运气。这是(在选择的三个图像中)第二张照片显示。看起来第一张和第二张照片都比内容视图更长,并且会将中间视图移动(Squished)。
答案 0 :(得分:0)
除了一些细节(可能导致问题)之外,您的代码看起来很好:
添加:
view.setNeedsLayout()
view.layoutIfNeeded()
在访问scrollView
的框架之前(一个好的地方将在for循环之前)。
这是因为在使用Autolayout时,如果在布局引擎执行传递之前访问视图的帧,则会得到不正确的帧大小/位置。
从for循环中删除这些行:
scrollView.contentSize = CGSize(width: imgView.frame.width * CGFloat(index), height: scrollView.bounds.height)
scrollView.setNeedsLayout()
并将此行放在for循环之后(外部):
scrollView.contentSize = CGSize(width: imgView.frame.width * CGFloat(currentImages.count), height: scrollView.bounds.height)