小妹想在游戏的大地图实现 缩放以2个手指中间点为锚点 移动则以Layer的左下角 下面是代码
-(void) handlePinchFrom:(UIPinchGestureRecognizer*)recognizer
{
    static float lastScale;
    
    if([recognizer state] == UIGestureRecognizerStateBegan)
    {
        lastScale = m_layer.scale;
    }
    m_nowScale = (lastScale - 1) + recognizer.scale;
    m_nowScale = MIN(m_nowScale, 1.5f);  //设置缩放上限
    m_nowScale = MAX(m_nowScale, m_winSize.width/BIGMAP_WIDTH);  //设置缩放下限
    
    if ([recognizer numberOfTouches] == 2) {
        [m_layer setContentSize:CGSizeMake(BIGMAP_WIDTH, BIGMAP_HEIGHT)];
        
        CGPoint position1 = [recognizer locationOfTouch:0 inView:[[CCDirector sharedDirector] view]];
        CGPoint position2 = [recognizer locationOfTouch:1 inView:[[CCDirector sharedDirector] view]];
        position1 = CGPointMake(position1.x, m_winSize.height-position1.y);
        position2 = CGPointMake(position2.x, m_winSize.height-position2.y);
        CGPoint centerPosition = CGPointMake(((position1.x+position2.x)/2.0f-m_layer.position.x)/m_layer.contentSize.width,
                                             ((position1.y+position2.y)/2.0f-m_layer.position.y)/m_layer.contentSize.height);
        NSLog(@"%f, %f", centerPosition.x, centerPosition.y);
        [m_layer setAnchorPoint:centerPosition];
        NSLog(@"%f, %f", m_layer.anchorPoint.x, m_layer.anchorPoint.y);
    }
    
    [m_layer setScale:m_nowScale];
    
    //这里不写 缩放正常 移动不正常 不写移动正常 缩放不正常
    if (!CGPointEqualToPoint(m_layer.anchorPoint, CGPointZero)) {
        [m_layer setAnchorPoint:CGPointZero];
    }
    //
    
    if (m_layer.position.x >= 0) {
        [m_layer setPosition:CGPointMake(0, m_layer.position.y)];
    }
    else if (m_layer.position.x+BIGMAP_WIDTH*m_nowScale < m_winSize.width) {
        [m_layer setPosition:CGPointMake(m_winSize.width-BIGMAP_WIDTH*m_nowScale, m_layer.position.y)];
    }
    
    if (m_layer.position.y >= 0) {
        [m_layer setPosition:CGPointMake(m_layer.position.x, 0)];
    }
    else if (m_layer.position.y+BIGMAP_HEIGHT*m_nowScale < m_winSize.height) {
        [m_layer setPosition:CGPointMake(m_layer.position.x, m_winSize.height-BIGMAP_HEIGHT*m_nowScale)];
    }
}