【问题标题】:How can I use UIScrollView for overlapped images iphone如何将 UIScrollView 用于重叠图像 iphone
【发布时间】:2011-06-29 18:45:11
【问题描述】:

您好,我在特定位置有一张大图和一张小图... 我把它们都加到了ScrollView下,但是不能正常工作? 我想放大,每个都在它的位置

这是我的代码:

    myScrollView.contentSize = CGSizeMake(imageView.frame.size.width, imageView.frame.size.height);
    myScrollView.maximumZoomScale = 3.0;
    myScrollView.minimumZoomScale = 1.0;
    myScrollView.clipsToBounds = YES;
    myScrollView.delegate = self;

    [myScrollView addSubview:imageView];

谢谢


嗨,麦克沃斯;我做到了,但如果我没有最大化图像,我无法将滚动视图移动到任何地方,但如果我放大它,我可以看到其余部分。我不知道为什么我尝试更改它,但它工作。你能看看下面的代码吗?

- (void)viewDidLoad{
    [super viewDidLoad];
    UIImage *image = [UIImage imageNamed:@"ucd.png"];
    //creating a view for UCD image
    ucdView = [[UIImageView alloc] initWithImage:image];
    //setting the frame for the ucdView as the same size of ucd image
    [ucdView setFrame:CGRectMake(0, 0, image.size.width, image.size.height)];


    //for the red pin to display in specific loc
    UIImageView *Health = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"redPin.png"]];
    [Health setCenter:CGPointMake(310,135)];
    //adding helathView to ucdview
    [ucdView addSubview:Health];
    //everything for scroll view
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, ucdView.frame.size.width, ucdView.frame.size.height)];
    [scrollView setMinimumZoomScale:1.0];
    [scrollView setMaximumZoomScale:3.0];
    scrollView.clipsToBounds = YES;
    [scrollView setContentSize:CGSizeMake(image.size.width, image.size.height)];
    [scrollView setDelegate:self];
    [scrollView addSubview:ucdView];//adding ucd view to scroll view
    [self.view addSubview:scrollView]; // adding scrollview to self.view main view
}

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {//apply zooming for scrollview
    return scrollView;
}    

【问题讨论】:

    标签: iphone image uiscrollview overlapping


    【解决方案1】:

    你实现了吗:

    - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
        return self.imageView;
    }
    

    另外,您知道通过将 scrollView 的 contentSize 设置为您的 imageSize,它不会比这更大,对吧?它会放大,相应地裁剪外部像素。顺便说一句,如果这是你的计划,为什么不直接设置呢?

    myScrollView.contentSize = imageView.frame.size;
    

    =====进一步回答,回复其他来源

    嗯,我注意到的主要事情是您需要在 viewForZoomingInScrollView 中返回 imageView ucdView,而不是 scrollView。看起来你已经创建了 ucdView 作为一个属性(这样它就和你的视图一样长),但以防万一......

    1) 在您的 .h 文件中:

    UIImageView * ucdView;
    @property (nonatomic, retain) UIImageView * ucdView;
    

    2) 在您的 .m 文件中;

    @synthesize ucdView;
    

    3) 换行:

    ucdView = [[UIImageView alloc] initWithImage:image];
    

    只是

     self.ucdView = [[UIImageView alloc] initWithImage:image];
    

    4) 换行

     return scrollView
    

    到:

     return self.ucdView;
    

    5) 将以下内容添加到您的 dealloc 例程中:

    self.ucdView = nil;
    

    另外,您是否将 <UIScrollViewDelegate> 协议添加到您的 ViewController 定义(在 .h 文件中)?

    最后,你有一个滚动视图和健康泄漏;添加[滚动视图发布];和 viewDidLoad 末尾的 [健康发布]

    【讨论】:

    • 嗨麦克沃斯你能检查我上面发布的答案吗,,,
    • 查看我的答案的编辑版本。另外,恐怕我不能完全解析“我做到了,但是如果我没有最大化图像,我就无法将滚动视图移动到任何地方,但是如果我放大它,我可以看到其余的......我不知道为什么我尝试更改它,但它可以工作”。也许再拍一张?
    • 嗨,麦克,感谢您的回答一百万,,我修复了代码,您的代码帮了我很多......
    • 很高兴听到这个消息。希望从这里开始一切顺利!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 2010-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多