我正在使用滚动视图为我的应用程序制作一个图像库,我已经基本上可以使用了。它可以让我一个接一个地滚动图像,但最后一个图像总是被剪掉,我不知道为什么。
这是大部分操作:
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++;
}
减去这个缺陷,这是完美的工作,正如我所期望的。
根据共享代码,ContenSize
的Width
为:
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);
因此,实际上ContenSize
的Width
不能包含ImageView
的全部内容。如果ImageView的数量越大,最后一张图片将被剪切得越多。
您可以如下修改ContentSize
的Width
以检查其是否工作:
svGallery.ContentSize = new CGSize
{
Width = (svGallery.Frame.Width + 50) * (idx + 1)
};