【问题标题】:viewForZoomingInScrollView UIScrollView Background and Image not in syncviewForZoomingInScrollView UIScrollView 背景和图像不同步
【发布时间】:2011-12-09 11:24:42
【问题描述】:

我正在放大滚动视图中的图像。但我的滚动视图有一个背景,我想与前景图像保持同步。

这是我目前所拥有的。我想知道我是否也必须在 viewForZoomingInScrollView 方法中返回 bgImage 。但我只是不确定如何或是否可以激活。

这是我在下面所做的以使图像缩放..如果有人可以帮助我弄清楚如何让 bg 同步滚动也将不胜感激。

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
    scrollView.backgroundColor = [UIColor blackColor];
    scrollView.delegate = self;
    scrollView.bounces = NO;
    scrollView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"auckland-300.jpg"]];
    image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"249a-134206f1d00-1342071f5d9.ImgPlayerAUCKLAND.png"]];
    scrollView.contentSize = image.frame.size;
    [scrollView addSubview:image];
    scrollView.minimumZoomScale = 1.0;
    scrollView.maximumZoomScale = 31.0;
    [scrollView setZoomScale:scrollView.minimumZoomScale];
    self.view = scrollView;    
}

#pragma Zooming

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return image;
}

【问题讨论】:

    标签: iphone ios uiscrollview


    【解决方案1】:

    我假设您的意思是您希望背景图像也可以缩放?我要做的是将UIImageView 也用于背景图像,并将该图像以及您的image 放入容器视图中,然后在viewForZoomingInScrollView: 中返回。所以沿着这些思路:

    - (void)viewDidLoad
    {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
    
        scrollView = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
        scrollView.backgroundColor = [UIColor blackColor];
        scrollView.delegate = self;
        scrollView.bounces = NO;
    
        backgroundImage = [[UIImageVIew alloc] initWithImage:[UIImage imageNamed:@"auckland-300.jpg"]];
    
        image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"249a-134206f1d00-1342071f5d9.ImgPlayerAUCKLAND.png"]];
    
        // Note here you should size the container view appropriately and layout backgroundImage and image accordingly.
        containerView = [[UIView alloc] initWithFrame:image.bounds];
        [containerView addSubview:backgroundImage];
        [containerView addSubview:image];
    
        scrollView.contentSize = containerView.frame.size;
        [scrollView addSubview:containerView];
    
        scrollView.minimumZoomScale = 1.0;
        scrollView.maximumZoomScale = 31.0;
        [scrollView setZoomScale:scrollView.minimumZoomScale];
        self.view = scrollView;    
    }
    
    #pragma Zooming
    
    - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
    {
        return containerView;
    }
    

    【讨论】:

    • 我看到你在那里做了什么.. 但是我在初始化 containerView 的那一行有一个错误,这是我以前从未有过的“containerView = [[UIView alloc] initWithFrame:image.frame.size ];"错误读取发送'CGSize'(又名结构'CGSize')到不兼容类型'CGRect'(又名结构'CGRect')的参数
    • 我把它改成了这个 containerView = [[UIView alloc] initWithFrame:CGRectMake(0,0,601,601)];我想会有更好的方法......但我不知道......但是:)谢谢你帮助它完美地工作
    • @C.Johns 哎呀,抱歉,这是一个错字。我已经修好了。请注意我在代码中的注释 - 您需要根据需要设置框架等。听起来你现在已经明白了。
    • '[scrollView setZoomScale:scrollView.minimumZoomScale];'解决了我的问题,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-03
    相关资源
    最近更新 更多