ios - 完全一样的代码,UIImageView 位置不同

查看:153
本文介绍了ios - 完全一样的代码,UIImageView 位置不同的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题


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看看。

这篇关于ios - 完全一样的代码,UIImageView 位置不同的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆