问题描述
我正在使用滚动视图为我的应用制作图像库,并且我基本上可以使用它。它可以让我一张一张地滚动浏览图像,但是最后一张图像总是被剪切掉,我不确定为什么。
这是大部分操作:
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 + 50
(ImageView
)大于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)
};