xcode,IOS,所有版本完全相同。
代码完全一样却是两个结果。(可以适配的是照着写的,错位的是我自己写的,UI部分是一样的)我特意把能对齐的版本的所有代码,你黏贴到另一个,效果不变。另一个正好空出一个bar的宽度,好像是故意的(横屏也会相应变窄)
这是对应frame NSLog输出
self.scrollView.contentSize {3264, 2448}
self.scrollView.frame {{0, 64}, {320, 504}}
self.imageView.frame {{0,0},{3264, 2448}}
self.view.backgroundColor = [UIColor purpleColor];
self.imageView.backgroundColor = [UIColor greenColor];
self.scrollView.backgroundColor = [UIColor blueColor];
这是布局,我特意关掉autolayout
关键代码
- (UIImageView *)imageView {
if (!_imageView) {
_imageView = [[UIImageView alloc] init];
}
return _imageView;
}
- (UIImage *)image {
return self.imageView.image;
}
- (void)setImage:(UIImage *)image {
self.imageView.image = image;
//self.imageView.contentMode = UIViewContentModeScaleAspectFit;
[self.imageView sizeToFit];
self.scrollView.contentSize = self.image ? self.image.size : CGSizeZero;
NSLog(@"self.scrollView.frame %@", NSStringFromCGRect(self.scrollView.frame));
[self.spinner stopAnimating];
}
- (void)setScrollView:(UIScrollView *)scrollView {
_scrollView = scrollView;
_scrollView.minimumZoomScale = 0.2;
_scrollView.maximumZoomScale = 2.0;
_scrollView.delegate = self;
self.scrollView.contentSize = self.image ? self.image.size : CGSizeZero;
}
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return self.imageView;
}
我去掉的bar,还是自动空开了横条的距离(在XCODE中看到会有一个窄横条)
这跟图片没关系,是navigation bar的问题。你先在
viewDidLoad
里加一句self.automaticallyAdjustsScrollViewInsets = NO;
,然后检查一下你有没有操作过 navigation bar。我不知道上面那个还是下面那个是你自己写的,加一句self.navigationController.navigationBar.translucent = YES
或者= NO
看看。