Cocoa touch Cocoa:为什么将一个帧分配给一个帧并不´;不起作用,但分配边界起作用

Cocoa touch Cocoa:为什么将一个帧分配给一个帧并不´;不起作用,但分配边界起作用,cocoa-touch,Cocoa Touch,我一直在阅读与框架和边界之间的差异相关的不同问题(,),但我仍然不明白为什么会出现这样的情况: UILabel *newMark = [[UILabel alloc] initWithFrame:self.frame]; newMark.text = @"|A3"; [self addSubview:newMark]; UILabel *newMark = [[UILabel alloc] initWithFrame:self.bounds]; newMark.text = @"|A3"; [

我一直在阅读与框架和边界之间的差异相关的不同问题(,),但我仍然不明白为什么会出现这样的情况:

UILabel *newMark = [[UILabel alloc] initWithFrame:self.frame];
newMark.text = @"|A3";
[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.frame;
[self addSubview:newMark];
不显示标签,但对边界执行等效操作时,如下图所示:

UILabel *newMark = [[UILabel alloc] initWithFrame:self.frame];
newMark.text = @"|A3";
[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屏幕的底部。有什么想法吗?

框架是相对于其超视图的。因此,如果在superview中,帧的原点位于(100200),并且将子视图的帧设置为与帧相同,则子视图将位于(100200)

通常(如果不涉及变换),当您想告诉子视图与超级视图大小相同时,您可以说:

subview.frame = superview.bounds;