drawRect在UIScrollView中裁剪

时间:2012-02-07 09:45:04

标签: objective-c ios

我正在尝试将图像绘制到覆盖drawRect的UIView子类中。此图像绘制类需要移动和缩放功能,因此我将其作为滚动视图的子视图。

我的问题是我的图像似乎被屏幕或scrollView边界(图像大于屏幕)裁剪。我不知道为什么,这似乎是非常基本的东西。

我的ViewController中的视图层次结构如下所示:

View Controller
  View
    ScrollView
      MapView

我为滚动视图和地图视图(实现drawRect的视图)创建了出口。

用于配置滚动视图的我的ViewController初始设置代码如下所示:

- (void)viewDidLoad
{
    [super viewDidLoad];
    scrollView.delegate = self; 
    scrollView.contentSize = CGSizeMake(450, 476);
    scrollView.minimumZoomScale = 0.6;
    scrollView.maximumZoomScale = 6.0;
}

我的drawRect实现:

- (void)drawRect:(CGRect)rect
{ 
    UIImage *myImage = [UIImage imageNamed:@"map.jpg"];
    CGRect rectangle = CGRectMake(0,0,450,476);
    [myImage drawInRect:rectangle];
}

图像在滚动视图中是可拖动和可缩放的,但它会在屏幕边界处被裁剪。

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

您的问题可能在drawInRect。从UIImage类的文档:

drawInRect:
Draws the entire image in the specified rectangle, scaling it as needed to fit.

根据需要将该矩形放大,并将其置于UIImageView中心。这个问题在这里得到解答UIScrollView image/photo viewer with paging enabled and zooming

答案 1 :(得分:0)

drawRect不能在作为参数传递的rect之外绘制到drawRect方法,这是由视图框架决定的。使视图1200,1200并确保在所有包含视图上禁用了clipToBounds。