UIScrollView停止太早

问题描述

我正在使用滚动视图为我的应用制作图像库,并且我基本上可以使用它。它可以让我一张一张地滚动浏览图像,但是最后一张图像总是被剪切掉,我不确定为什么。

这是大部分操作:

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,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++;
}

减去该缺陷,它可以正常工作,并且符合我的预期。

解决方法

从共享代码中,Width中的ContenSize为:

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

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

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

因此,Width中的实际ContenSize不能包含所有ImageView的内容。而且,如果ImageView的数量较大,则最后一张图片将被剪切掉更多。

您可以按照以下方式修改Width中的ContentSize,以检查其是否有效:

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...