我有一个 View Controller ,里面有一个 tableView。当我设置它的 tableView 的框架时,它出现在屏幕上与我给它的框架不同的地方。例如,给它一个 200 的 X 坐标和 128 的宽度会使整个东西离开屏幕。
这里是我实例化 View Controller 的地方:
myPopover = [[PopupVC alloc] initWithFrame:CGRectMake(100, 47, 128, 150)];
以及 View Controller 的初始化代码:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
}
return self;
}
- (id)initWithFrame:(CGRect)_frame
{
self = [self initWithNibName:nil bundle:nil];
if (self)
{
frame = _frame;
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
[self.view setFrame:frame];
staticTable = [[UITableView alloc] initWithFrame:frame style:UITableViewStylePlain];
[self.view addSubview:staticTable];
有人知道为什么会这样吗?记录框架时,它准确说明了我输入的内容,但这显然不是放置在 View 上的框架。作为另一个测试,我做了一个完全相同的尺寸 View ,清楚地表明它们在不同的地方。非常奇怪,感谢任何帮助。
谢谢
最佳答案
你的
[self.view setFrame:frame];
(100,47) 绝对坐标
| |
| |
| self.view |
| |
| |
你的 staticTable 留下零坐标。
staticTable = [[UITableView alloc] initWithFrame:CGRectMake(0,0,128,150) style:UITableViewStylePlain];
因为
(0,0) self.view 的相对坐标。
(100,47) superView 的绝对坐标
self.view
|[ ]|
|[ ]|
|[staticTableView ]|
|[ ]|
|[ ]|
如果你设置的frame等于下图。
staticTable = [[UITableView alloc] initWithFrame:frame style:UITableViewStylePlain];
self.view
| [ | ]
| [ | ]
| [static|TableView]
| [ | ]
| [ | ]
关于iphone - 设置 UITableView 的框架不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9980217/