0

UIImageView次のようなサブレイヤーを挿入するカスタムがあります。

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        small_ = frame;
        float newX = self.center.x - ((self.frame.size.width*SELECTED_SCALE_VALUE)*0.5);
        float newY = self.center.y - ((self.frame.size.height*SELECTED_SCALE_VALUE)*0.5);
        big_ = CGRectMake(newX, newY, self.frame.size.width*SELECTED_SCALE_VALUE, self.frame.size.height*SELECTED_SCALE_VALUE);

        [self setupSubviews];
    }
    return self;
}

- (void)setupSubviews
{
    shadowImage_ = [[UIImage imageNamed:@"gallery_shadow_frame"] resizableImageWithCapInsets:UIEdgeInsetsMake(20, 20, 20, 20)];
    shadowImageView_ = [[UIImageView alloc] initWithFrame:[self shadowFrame]];
    shadowImageView_.image = shadowImage_;
    shadowImageView_.backgroundColor = [UIColor blueColor];
    [self.layer insertSublayer:[shadowImageView_ layer] atIndex:0];
}

後でフレームのサイズを変更するとUIImageView、サブレイヤーがクリップされます。

- (void)makeBig
{
    self.frame = big_;
    // shadowImageView_.frame = [self shadowFrame];
}

- (void)makeSmall
{
    self.frame = small_;
    // shadowImageView_.frame = [self shadowFrame];
}

全体像を示すために、これもあります:

- (CGRect)shadowFrame
{
    int x = -X_BORDER;
    int y = -Y_BORDER;
    int width = self.frame.size.width + X_BORDER * 2;
    int height = self.frame.size.height + Y_BORDER * 2;
    return CGRectMake(x, y, width, height);
}

UIImageViewのサイズを変更するにはどうすればよいですshadowImageView_ sublayer

4

1 に答える 1

1

やってみました

self.layer.masksToBounds = NO;

?

于 2012-10-09T12:55:04.980 に答える