0

サブビュー自体よりも大きいサブビューに画像がありますが、サブビューの外にある画像の部分を表示することは可能ですか?試した

view.clipsToBounds=NO; 

しかし、まだ不足はありません。

これが私のコードの一部です。

xRayView = [[XRayView alloc] initWithFrame: CGRectMake((1024 - 800) / 2, self.device.frame.origin.y - 26, 800,530)];
        xRayView.clipsToBounds=NO;
        [xRayView setForgroundImage: [UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource: @"xray_foreground_01" ofType: @"png"]]];
        [xRayView setBackgroundImage: [UIImage imageWithContentsOfFile: [[NSBundle mainBundle] pathForResource: @"xray_background_01" ofType: @"png"]]];

前景と背景の画像がX線ビューよりも大きい

XrayViewには2つのプロパティがあります

backgroundImage foregroundImage

そしてその方法

- (void)drawRect: (CGRect)rect
{
    [super drawRect: rect];

    CGRect forgroundClips[] = {
        CGRectMake((self.frame.size.width - self.forgroundImage.size.width)/2, 0, self.forgroundImage.size.width, currentPan.origin.y),
        CGRectMake((self.frame.size.width - self.forgroundImage.size.width)/2, currentPan.origin.y + currentPan.size.height, self.forgroundImage.size.width, self.forgroundImage.size.height - (currentPan.origin.y + currentPan.size.height))
    };

    CGContextSaveGState(UIGraphicsGetCurrentContext());
    CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0, self.bounds.size.height);
    CGContextScaleCTM(UIGraphicsGetCurrentContext(), 1, -1);
    CGContextClipToRects(UIGraphicsGetCurrentContext(), forgroundClips, sizeof(forgroundClips) / sizeof(forgroundClips[0]));
    //CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height), self.forgroundImage.CGImage);
    CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake((self.frame.size.width - self.forgroundImage.size.width)/2, 0, self.forgroundImage.size.width, self.forgroundImage.size.height), self.forgroundImage.CGImage);
    CGContextRestoreGState(UIGraphicsGetCurrentContext());

    CGContextSaveGState(UIGraphicsGetCurrentContext());
    CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0, self.bounds.size.height);
    CGContextScaleCTM(UIGraphicsGetCurrentContext(), 1, -1);
    CGContextClipToRect(UIGraphicsGetCurrentContext(), currentPan);
    CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), 153, 153, 153, 0.5);
    CGContextSetLineWidth(UIGraphicsGetCurrentContext(), 3);
    CGContextStrokeRect(UIGraphicsGetCurrentContext(), currentPan);
    //CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, self.bounds.size.width, self.bounds.size.height), self.backgroundImage.CGImage);
    CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake((self.frame.size.width - self.backgroundImage.size.width)/2 , 0, self.backgroundImage.size.width, self.backgroundImage.size.height), self.backgroundImage.CGImage);
    CGContextRestoreGState(UIGraphicsGetCurrentContext());

    // Draw a yellow hollow rectangle

   // CGContextRestoreGState(UIGraphicsGetCurrentContext());
}
4

2 に答える 2

5

ビューは、何があってもその境界の外に描画することはできません。設定すると、サブビューはビューの外側にのみレンダリングできますが、ビューの外側に(メソッドclipsToBounds内で)描画できないという事実は変わりません。drawRect

ソースにアクセスできる場合はXRayView、画像がどのようにレンダリングされるかを確認してください。それらはおそらくのdrawRect方法で描かれていますXRayView。代わりに追加する必要がありUIImageViewます。

于 2012-09-19T15:30:30.017 に答える
1

clipsToBounds画像が境界の外でクリップされることを意味します。に設定されていることを確認してくださいNO。(これは元の投稿が言ったときに投稿されましたclipsToBounds = YES;

于 2012-09-19T15:18:00.750 に答える