为什么我的UILabel没有出现在正确的空间中

时间:2014-06-22 15:12:04

标签: ios objective-c uiimageview uilabel

我有一个游戏。我正在使用标签对象加载3个图像视图。然后我加载5,然后是7.就在昨天我遇到了同样的问题,我发现答案是将标签上的自动调整掩码设置为无。好吧,我做到了,它解决了,但现在问题又回来了。这很令人困惑,我不知道如何修复它。

我的问题是,如果我已经这样做,为什么还会这样呢?我该如何解决?

这是我的代码:

  // random word from array of object
    NSString *randomWord = [self.objects objectAtIndex:randomObject];

    [self.imageViews[i] addSubview:self.labels[i]];
    [self.labels[i] setCenter:[self.imageViews[i] center]];

    // all labels setting text and alignment
    [self.labels[i] setText:randomWord];
    [self.labels[i] setTextAlignment:NSTextAlignmentCenter];

    // adding words to alphabetical array
    [self.alphabeticalWords addObject:randomWord];
    NSLog(@"%@", randomWord);
    //NSLog(@"%@", self.alphabeticalWords);

    [self.labels[i] sizeToFit];
    [self.labels[i] setAutoresizingMask:UIViewAutoresizingNone];
    [self.imageViews[i] setUserInteractionEnabled:YES];
    [self.imageViews[i] addGestureRecognizer:panGesture];

这是问题

enter image description here

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

如果视图层次结构和center,则使用一个问题。您将标签作为子视图添加到图像视图,然后使用center尝试覆盖它们。中心的定义是:

The center is specified within the coordinate system of its superview and is measured in points. Setting this property changes the values of the frame properties accordingly.

将子视图的中心设置为其超级视图的中心不一定会按照您想要的方式运行,因为它们不在同一坐标空间中。

您应该使用图像视图的bounds,它代表其内部坐标空间。您可能想要做的是这样的事情:

[self.labels[i] setCenter:CGPointMake((self.imageViews[i].bounds.size.width / 2), (self.imageViews[i].bounds.size.height / 2)];