0

私は init メソッドに UILabel を配置しているカスタム UIImageView を持っています:

-(id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self)
    {
        self.displayNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, (self.frame.size.width - 14), (self.frame.size.height - 14))];
        self.displayNameLabel.center = CGPointMake((self.frame.size.width / 2), (self.frame.size.height / 2));
        self.displayNameLabel.backgroundColor = [UIColor clearColor];
        self.displayNameLabel.textAlignment = UITextAlignmentCenter;
        self.displayNameLabel.font = [UIFont fontWithName:labelFont size:22];
        [self addSubview:self.displayNameLabel];

        // Other code
    }
}

これは、UIScrollView にある別の UIImageView に配置されます。

そのため、UILabel を含むカスタム UIImageView を含む UIImageView を含む UIScrollView

UIScrollView を拡大すると、ラベルがおかしくなりました。

ズームなしでどのように見えるか:

ここに画像の説明を入力

拡大後:

ここに画像の説明を入力

ズームインするときにカスタム UIImageView のサイズを変更して、一定のサイズを維持します (ズームインしても大きくなりません)。

-(void)scrollViewDidZoom:(UIScrollView *)scrollView
{
    for (PointImageView *point in self.mapImageView.subviews)
    {
        if ([point isKindOfClass:[PointImageView class]])
        {
            CGPoint oldCenter = point.center;

            float pointSize = point.frame.size.width;

            float newPointSize = pointSize / zoomScale;

            point.frame = CGRectMake(point.frame.origin.x, point.frame.origin.y, newPointSize, newPointSize);

            point.center = oldCenter;
        }
    }

    oldZoomScale = scrollView.zoomScale;
}

カスタム UIImageView を移動すると、ラベルが一緒に移動しないのはなぜですか?

4

1 に答える 1

0

Well, you are not moving, but zooming, so this is different. You need to adjust the uilabel frame as well and set the uilabel number of lines to 1 and set the adjustsfontsizetofitwidth to yes. Also set the minimumFontSize to something like 5 or 6 pixels.

于 2012-10-12T21:01:29.373 に答える