我有一个自定义的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时,我的标签变得非常愚蠢。
没有缩放的外观:
:
我在放大时调整自定义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时,为什么标签不会随之移动?
答案 0 :(得分:0)
嗯,你不是在移动,而是在缩放,所以这是不同的。 您还需要调整uilabel帧并将uilabel行数设置为1,并将adjustsfontsizetofitwidth设置为yes。 同时将minimumFontSize设置为5或6像素。