UILabel在其支持移动时不动

时间:2012-10-12 19:44:18

标签: objective-c ios

我有一个自定义的UIImageView,我在init方法中放置了UILabel:

-(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。

所以,包含UIImageView的UIScrollView包含包含UILabel的自定义UIImageView

当我放大UIScrollView时,我的标签变得非常愚蠢。

没有缩放的外观:

enter image description here

放大后

enter image description here

我在放大时调整自定义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时,为什么标签不会随之移动?

1 个答案:

答案 0 :(得分:0)

嗯,你不是在移动,而是在缩放,所以这是不同的。 您还需要调整uilabel帧并将uilabel行数设置为1,并将adjustsfontsizetofitwidth设置为yes。 同时将minimumFontSize设置为5或6像素。