UIScrollView 停止得太早

UIScrollView is stopping too soon

我正在使用 scrollview 为我的应用程序制作图片库,而且我大部分时间都在使用它。它可以让我一张一张地滚动浏览图片,但最后一张图片总是被截断,我不确定为什么。

这是大部分操作:

var idx = 0;

foreach (var mediaItem in _mediaItems)
{
    var xPosition = UIScreen.MainScreen.Bounds.Width * idx;
    var imageView = new UIImageView();

    imageView.SetImage(new NSUrl(mediaItem), UIImage.FromBundle("image_placeholder"));
    imageView.Frame = new CGRect(xPosition, 0, svGallery.Frame.Width + 50, svGallery.Frame.Height);
    imageView.ContentMode = UIViewContentMode.ScaleAspectFit;

    svGallery.ContentSize = new CGSize
    {
        Width = svGallery.Frame.Width * (idx + 1)
    };
    svGallery.AddSubview(imageView);

    idx++;
}

减去那个缺陷,这完美地工作,正如我所期望的那样。

来自共享代码,ContenSizeWidth 是:

Width = svGallery.Frame.Width * (idx + 1)

但是,ImageView的每个Width(svGallery.Frame.Width + 50)都大于vGallery.Frame.Width:

imageView.Frame = new CGRect(xPosition, 0, svGallery.Frame.Width + 50, svGallery.Frame.Height);

因此,实际上ContenSizeWidth不可能包含ImageView的全部内容。并且如果ImageView的个数越大,最后一张图会被切掉的越多

您可以修改 ContentSizeWidth 如下来检查它是否有效:

svGallery.ContentSize = new CGSize
{
    Width = (svGallery.Frame.Width + 50) * (idx + 1)
};