我一直在阅读与框架和边界之间的差异相关的不同问题(Cocoa: What's the difference between the frame and the bounds?,UIView frame, bounds and center),但我仍然不明白为什么会这样:
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的屏幕更多。有什么想法吗?
答案 0 :(得分:1)
frame
与其超级视图相关。因此,如果您的框架的原点位于您的超级视图中(100,200),并且您将子视图的框架设置为与您的框架相同,那么您的子视图将位于(100,200)内。
通常情况下(如果没有涉及变换),当你想告诉子视图与superview的大小相同时,你会说:
subview.frame = superview.bounds;