代码之家  ›  专栏  ›  技术社区  ›  Dan Rosenstark

使用uitextview和内容大小缩放

  •  0
  • Dan Rosenstark  · 技术社区  · 14 年前

    这个问题是 similar to this one 但希望它会引起更多的兴趣,因为我尝试过一些东西。

    我正在尝试在uitextview中执行标准的夹盘滚动。我的代表执行 UITextViewDelegate 实现了这个方法

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

    [这可能是错误的,但返回 [[self subviews] objectAtIndex:0] 没有改变任何东西(奇怪的是)。

    所以压缩的东西可以工作,但是当有一个缩放时,uitextView实例就失去了允许我正确地移动内容的所有概念。我试着用这种方法来补救这个问题

    - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale {
        CGSize size = self.contentSize;
        size.width *= scale;
        size.height *= scale;
        self.contentSize = size;
    }
    

    但所有这些猜测并没有让我走得很远(不足为奇)。

    编辑: 我做过这样的事,除了过一会儿就爆炸了,这不是我想要的。这是 action A方法 UIPincheGestureRecognizer :

    - (void) doSomething:(id)sender {
        CGFloat factor = [(UIPinchGestureRecognizer *)sender scale];
        float size = 12 * factor;
        if (size > 6 && size < 40) {
            self.font = [[UIFont fontWithName:self.font.fontName size:12 * factor] autorelease];
        }
    }
    
    2 回复  |  直到 11 年前
        1
  •  3
  •   Anonymous    11 年前

    我知道这是旧的,但我最近遇到了麻烦,所以希望这能帮助一些人:

    - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
    {
          for(UIView *subView in self.subviews)
          {
             if([subView isKindOfClass:[UIWebDocumentView class]])
                return subView;
          }
          return [self.subviews lastObject];
    }
    
        2
  •  0
  •   Dan Rosenstark    14 年前

    加上这一点会给变焦增加很多连贯性。您还可以调整文本宽度,我现在将研究:

    - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view {
        frameBeforeZooming = self.frame;
    }
    
    - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale {
        self.frame = frameBeforeZooming;
    }
    

    显然,您需要在头中定义一个CGRECT。