我在iOS应用程序中有一个简单的视图,这导致了一些问题。
在这个视图中,我有一个UIScrollView(主视图的全宽/高度),它固定在主视图的顶部/底部/前/后(在IB中)。
在UIScrollView中,我有一个UIImageView,它固定在UIScrollView的顶部/底部/前导/尾部。
现在,UIImageView中的图像几乎是主视图的两倍,因此UIImageView的内容模式设置为Aspect Fit。我的问题是,当我运行项目时,图像将以其实际大小显示。
UIImageView在UIScrollView中的原因是因为我希望用户能够放大图像(因此它的大小是原来的两倍)。
我还希望用户能够旋转屏幕,因为图像可能是纵向或横向格式,具体取决于他们选择在上一个视图中查看的图像。
当然这应该很容易做到(在IB中也是如此),但是我不能为我的生活弄明白。
答案 0 :(得分:3)
您还必须为UIImageView添加宽度和高度限制。这是由于默认情况下UIImageView具有从图像大小派生的内在内容大小。 以下是用于定义这些约束的代码片段:
[scrollView addConstraint:[NSLayoutConstraint constraintWithItem:imageView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:scrollView attribute:NSLayoutAttributeWidth multiplier:1.0f constant:0]];
[scrollView addConstraint:[NSLayoutConstraint constraintWithItem:imageView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:scrollView attribute:NSLayoutAttributeHeight multiplier:1.0f constant:0]];
即使你可以在IB中这样做。
答案 1 :(得分:0)
如果我理解您的问题,您希望在开始时缩小内容。假设您的内容与手机没有相同的宽高比(安全假设),您可以选择“信箱”/“窗帘”内容,也可以只缩小,直到图像的高度或宽度显示为电话(前面提到的信拳)。我选择了后一种方法,并将我的最小缩放设置为任一维度的最小缩放比例。
因此代码是:
// configure image and scroll view for scrolling to extents of actual image
double widthScale = self.view.frame.size.width / image.size.width;
double heightScale = self.view.frame.size.height / image.size.height;
self.scrollView.minimumZoomScale = MAX(widthScale, heightScale);
self.scrollView.maximumZoomScale = MIN(1 / widthScale, 1 / heightScale) / [[UIScreen mainScreen] scale]; // scale to pixel resolution
self.scrollView.zoomScale = self.scrollView.minimumZoomScale;
它假设您使用全屏。
如果你想要任何一个维度的min,请使用:
self.scrollView.minimumZoomScale = MIN(widthScale, heightScale);