2011-12-26 9 views
3

スクロールビューがCGRectMake(0, 0, 290, 266)で、画像があります。画像にはスケーリングやズームなどの機能があります。しかし、画像を下または上にドラッグすると、スクロールビューの後ろに消えてしまい、表示できません。私はそれが消えないようにイメージを縛りたい。あなたは、画像ビューのフレームは、デバイスの画面boundaries.Toを参照して変更されるview.Then画像の境界を変更するスクロールしながらこれが起こるUIScrollviewのUIImage

- (id)initWithFrame:(CGRect)frame 
{ 
    if ([super initWithFrame:frame] == nil) { 
     return nil; 
    } 

    appDelegate = (PostCart1AppDelegate*)[[UIApplication sharedApplication] delegate]; 
    originalSize = frame.size; 
    originalTransform = CGAffineTransformIdentity; 
    touchBeginPoints = CFDictionaryCreateMutable(NULL, 0, NULL, NULL); 
    self.userInteractionEnabled = YES; 
    self.multipleTouchEnabled = YES; 
    self.exclusiveTouch = YES; 

    return self; 
} 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSMutableSet *currentTouches = [[[event touchesForView:self] mutableCopy] autorelease]; 
    [currentTouches minusSet:touches]; 
    if ([currentTouches count] > 0) { 



     [self updateOriginalTransformForTouches:currentTouches]; 
     [self cacheBeginPointForTouches:currentTouches]; 
    } 
    [self cacheBeginPointForTouches:touches]; 
} 

CGPoint fr; 

-(BOOL)checkFrameinBounds:(TouchImageView *)t 
{ 

    float x = [touch1 locationInView:self].x; 
    float y = [touch1 locationInView:self].y;  
    NSLog(@"touch x = %f",x); 
    NSLog(@"touch y = %f",y); 


    if((fr.x < 30 || fr.y < 30) || (fr.x > 265 || fr.y > 240)) 
    { 
     NSLog(@" NO .. fr.x = %f",fr.x); 
     NSLog(@" NO .. fr.y = %f",fr.y); 
     return NO; 
    } 
    else 
    { 
     NSLog(@" YES .. fr.x = %f",fr.x); 
    NSLog(@" YES .. fr.y = %f",fr.y); 
     return YES; 
    } 

} 

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 

    touch1 = [touches anyObject]; 
    fr=[[[event allTouches] anyObject] locationInView:self.superview]; 
    if ([self checkFrameinBounds:self]) 
    { 
    CGAffineTransform incrementalTransform = [self incrementalTransformWithTouches:[event touchesForView:self]]; 
    self.transform = CGAffineTransformConcat(originalTransform, incrementalTransform); 

    [self setConstrainedTransform:CGAffineTransformConcat(originalTransform, incrementalTransform)]; 
    } 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 

    if ([self checkFrameinBounds:self]) 
    { 

    for (UITouch *touch in touches) { 
     if (touch.tapCount >= 2) { 
      [self.superview bringSubviewToFront:self]; 
     } 
    } 

    [self updateOriginalTransformForTouches:[event touchesForView:self]]; 
    [self removeTouchesFromCache:touches]; 

    NSMutableSet *remainingTouches = [[[event touchesForView:self] mutableCopy] autorelease]; 
    [remainingTouches minusSet:touches]; 
    [self cacheBeginPointForTouches:remainingTouches]; 


    } 
} 
+0

画像が自動再生されるのでしょうか?あなたはそれを保持しようとしましたか? – Dimme

+0

はい私はイメージを保持しています。アプリケーションはクラッシュしません。バー画像が消えてしまった。 – DipakSonara

+0

@DipakSonaraイメージのドラッグをどのようにして実装しましたか?あなたはそのコードを提供していただけますか? – MadhavanRP

答えて

0

はscrollview内部常に画像ビューを持っているあなたイメージビューのフレームを変更しなければならず、そのフレームはスクロールビューである親ビューを参照して変更されます。