私は 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 を移動すると、ラベルが一緒に移動しないのはなぜですか?