【问题标题】:Zooming multiple UIImageView contents in UIScrollView在 UIScrollView 中缩放多个 UIImageView 内容
【发布时间】:2014-08-05 06:25:25
【问题描述】:

我在缩放时遇到了一些问题,当我缩放时,下一个 UIImageView 超出了我正在放大的 UIImageView。

我将 UIImageView 加载到我在控制器中调用的 UIScrollView 的子类中。加载功能和滚动功能完美运行。

第一个问题是当我放大时,下一个 UIImageView 超出了我正在放大的那个。

所以我尝试将每个 UIImageView 放入我放入 ScrollView 的 UIView 中,但它执行相同的操作...

我遇到的第二个问题是,当我放大时,我的滚动不再起作用了。

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor blackColor];
    scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
    scroll.pagingEnabled=YES;

    NSInteger numberOfViews = 6;
    for (int i = 0; i < numberOfViews; i++) {
        CGFloat xOrigin = i * self.view.frame.size.width;
        image=[[UIImageView alloc]initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d",i]]];

        image.frame=CGRectMake(xOrigin, 0, self.view.frame.size.width, self.view.frame.size.height);

      [scroll addSubview:image];
   }

   scroll.maximumZoomScale=6.0;
   scroll.minimumZoomScale=0.5;
   scroll.delegate=self;
   scroll.clipsToBounds=YES;


   scroll.contentSize = CGSizeMake(self.view.frame.size.width * numberOfViews, self.view.frame.size.height);

   [self.view addSubview:scroll];
}

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

我知道存在与此类似的问题,但对我的事业没有任何帮助。任何对我的代码进行更改以使其正确的建议都非常感谢。

【问题讨论】:

  • 在这里查看缩放和分页:raywenderlich.com/10518/…
  • @NeverHopeless 我已经感谢您的谷歌搜索。我没有使用分页,我使用的是单个 UIImageView
  • 不使用分页,那为什么是scroll.pagingEnabled = YES;?另外,当最小/最大缩放比例等于 1.0 时如何缩放?
  • @NeverHopeless。抱歉,我的意思是说页面控制。我正在用不同的值测试缩放比例值。我编辑了代码。
  • @NeverHopeless 你知道答案吗??

标签: ios objective-c iphone uiscrollview uiimageview


【解决方案1】:
-(UIView *) viewForZoomingInScrollView : (UIScrollView *)scrollView
{
     return _image3;
     _image3.userInteractionEnabled = YES;
     _image3.multipleTouchEnabled = YES;
}


-(void)  tapfucntion : (UIGestureRecognizer *)  guesture
{ 
    if  (self.scroll.zoomScale >_ scroll.minimumZoomScale )
        [self.scroll setZoomScale:_scroll.minimumZoomScale animated:YES];
    else
        [self.scroll setZoomScale:2.0 animated:YES];
}

【讨论】:

  • 什么是 image3??.请用文字来解释你的答案代码中发生了什么
  • 对于缩放,您只需使用访客识别器...对于放大滚动视图,您只需启用用户交互...并且该功能用于点击访客...意味着当您双击图像时它会缩放......在你的代码中编写该函数它可以工作
  • 它在下面添加了视图确实加载了
  • 您是 Objective c 的新手吗?我没有足够的声誉,否则我会因为无用和错误的答案而否决您的答案。请参阅它说明如何从我的捆绑包中获取图像的代码。跨度>
【解决方案2】:

在 ViewDidLoad 中

- (void)viewDidLoad
{
   _tap = [ [ UITapGestureRecognizer  alloc ]  initWithTarget : self action :  @selector( tapfucntion: ) ] ;

   _tap.numberOfTapsRequired=2;

   [self.scroll addGestureRecognizer: _tap];
}

【讨论】:

  • 无需点击也可以完成操作,我很喜欢捏自己。无关紧要的答案
  • in viewForZoomingInScrollView
  • 我是不是说我的图像没有缩放。我的问题是它没有正确缩放;这意味着用户交互已经启用。
【解决方案3】:

最好使用CollectionView 来解决这个问题。使用 Storyboard 轻松创建。

  1. 在单元格内使用customCell 创建collectionview,添加滚动视图和图像视图。

  2. ScrollViewDelegate 设置为CollectionViewCell

  3. collectionviewCellClass中添加这个委托方法。

    - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { return [scrollView viewWithTag:imageView]; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 2019-05-23
    • 1970-01-01
    • 2012-08-16
    • 2012-11-24
    • 2012-08-06
    相关资源
    最近更新 更多