我有一个包含 UINavigationBar 和 UIScrollView 的 ViewController。在滚动视图中,我放置了其他视图来创建分页类型的东西。我完美地完成了这项工作,但我不得不解决一个非常奇怪的问题,即我在 UIScrollView 中的所有坐标值都加倍,但元素在 .frame.origin 中返回了正确的坐标。
不知道为什么会这样并且搜索并没有发现任何东西,我认为我一定是错的并进行了测试。
我创建了上面的场景,但在背景中我放置了一个 10x10 像素网格的测量图像。我在 viewDidLoad 中为 viewController 运行它:
[super viewDidLoad];
// Size to fit the screen
float height = [[UIScreen mainScreen] bounds].size.height;
height -= [UIApplication sharedApplication].statusBarFrame.size.height;
height -= self.navBar.frame.origin.y;
height -= self.navBar.frame.size.height;
CGRect frame = self.scrollView.frame;
frame.size.height = height;
self.scrollView.frame = frame;
frame.origin.y = 10;
testUIView *testView = [[testUIView alloc] initWithFrame:frame];
[self.scrollView addSubview:testView];
结果证实了我最黑暗的恐惧。网格显示在 testView 下,显示两个十像素的块。价值确实翻了一番 - 但为什么会这样,我该怎么办?
[编辑]
出于好奇,这里是插入视图的代码:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
[[NSBundle mainBundle] loadNibNamed:@"testUIView" owner:self options:nil];
self.view.frame = frame;
[self addSubview:self.view];
[self.spinner startAnimating];
}
return self;
}