0

我一直在阅读与框架和边界之间的区别相关的不同问题(可可:框架和边界之间有什么区别?UIView框架,边界和中心),但我仍然不明白为什么这样的事情:

UILabel *newMark = [[UILabel alloc] initWithFrame:self.frame];
newMark.text = @"|A3";
[self addSubview:newMark];

或这个:

UILabel *newMark = [[UILabel alloc] init];
newMark.text = @"|A3";
newMark.frame = self.frame;
[self addSubview:newMark];

不显示标签,但在使用边界进行等效操作时,如下所示:

UILabel *newMark = [[UILabel alloc] initWithFrame:self.bounds];
newMark.text = @"|A3";
[self addSubview:newMark];

或这个

UILabel *newMark = [[UILabel alloc] init];
newMark.text = @"|A3";
newMark.frame = self.bounds;
[self addSubview:newMark];

它被显示。使用边界我不会有问题,但我认为没有将标签放在正确的位置,如以下屏幕截图所示:

标签

如您所见,其中“|”,“A”和“3”被剪切,因为它们显示在底部而不是ipad的屏幕上。有任何想法吗?

4

1 回答 1

1

是相对于它的framesuperview的。因此,如果您的框架的原点位于您的超级视图中的 (100,200),并且您将子视图的框架设置为与您的框架相同,那么您的子视图将位于您的 (100,200) 处。

通常(假设不涉及转换),当您想告诉子视图与父视图大小相同时,您会说:

subview.frame = superview.bounds;
于 2012-10-02T16:21:18.303 回答