iOS 7 缩放不能在具有 AutoLayout 的 ScrollView 中工作,但在 iOS8/9 中工作
Posted
技术标签:
【中文标题】iOS 7 缩放不能在具有 AutoLayout 的 ScrollView 中工作,但在 iOS8/9 中工作【英文标题】:iOS 7 zooming is not working in ScrollView with AutoLayout but working in iOS8/9 【发布时间】:2016-02-18 04:13:41 【问题描述】:我使用UIScrollView
做了一个缩放图像的演示。我的ViewController
只包含一张图片。
问题是图像无法放大 iO7
(我已经在 iPhone4S-ios7
上测试过),但在 iOS8
/iOS9
中可以正常工作。
关于如何解决它的任何想法?
这是我的代码
#import "ViewController.h"
@interface ViewController ()<UIScrollViewDelegate>
@property (weak, nonatomic) IBOutlet UIScrollView *scrollview;
@property (weak, nonatomic) IBOutlet UIView *contentview;
@end
@implementation ViewController
- (void)viewDidLoad
[super viewDidLoad];
float minimumScale = [_contentview frame].size.width /[_scrollview frame].size.width;
_scrollview.maximumZoomScale = 5; //Change as per you need
_scrollview.minimumZoomScale = minimumScale; //Change as you need
_scrollview.zoomScale = minimumScale;
_scrollview.delegate =self;
_scrollview.clipsToBounds = YES;
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
return self.contentview;
@end
这是布局结构
Screen.png 约束 ContentView 约束ScrollView 约束
这是我的演示项目
https://drive.google.com/file/d/0B679aXO0SBmMeUVHTUdOcmxJSXM/view
【问题讨论】:
尝试在viewForZoomingInScrollView中返回图片 我尝试返回图片,但还是不行 现在很有趣,你能分享这个演示项目,这样我就不用创建新的了。 谢谢,请稍等 drive.google.com/file/d/0B679aXO0SBmMeUVHTUdOcmxJSXM/view 这里是项目 【参考方案1】:高度和宽度 constraints
在 iOS 7 中导致此问题。解决方法是,为 iOS 7 删除那些 constraints
并手动计算 minimumScale
。在 IOS 8 及更高版本中,不要更改任何内容。
- (void)viewDidLoad
[super viewDidLoad];
float minimumScale = 1;
if (floor(NSFoundationVersionNumber) < NSFoundationVersionNumber_iOS_8_0)
[self.view removeConstraints:self.heightWidthConstraints];
minimumScale = self.scrollview.frame.size.width / self.imageView.image.size.width;
_scrollview.maximumZoomScale = 5; //Change as per you need
_scrollview.minimumZoomScale = minimumScale; //Change as you need
//_scrollview.zoomScale = minimumScale;
_scrollview.delegate = self;
//_scrollview.clipsToBounds = YES;
[self.scrollview setZoomScale:minimumScale animated:YES];
【讨论】:
【参考方案2】:
移除contentView
的宽高限制。
添加contentView
和scrollView
的centralHorizontal约束
让我知道它是否有效。
【讨论】:
我最近检查了您的代码,按照给定的步骤进行了更新并经过测试,它在 ios 7 8 9 中运行良好 抱歉回复晚了。我尝试了您的建议,但仍然无法正常工作。你能帮我分享你的代码吗 检查答案中更新的图像。如果你知道了,请告诉我 :((我还是不明白。我有你这样的所有约束 图片可以缩放,但只能在一个方向(垂直)缩放,不能缩放到水平以上是关于iOS 7 缩放不能在具有 AutoLayout 的 ScrollView 中工作,但在 iOS8/9 中工作的主要内容,如果未能解决你的问题,请参考以下文章
iOS Autolayout 2 多行 UILabel 在 UITableViewCell 中具有额外的填充
AutoLayout:在 UIStackView/UITableViewCell 中缩放 UIImageView 的问题