设置UITableView的框架无法正常工作

时间:2012-04-02 16:34:46

标签: iphone objective-c ios uitableview frame

我有一个视图控制器,里面有一个tableView。当我设置它的tableView框架时,它会出现在屏幕上不同的地方,然后是我给它的框架。例如,给它一个200的X坐标,宽度为128会使整个事物离开屏幕。

这是我实例化视图控制器的地方:

myPopover = [[PopupVC alloc] initWithFrame:CGRectMake(100, 47, 128, 150)];

视图控制器的初始化代码:

- (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];

}

有人知道为什么会这样吗?记录框架时,它确切地说明了我输入的内容,但这显然不是放在视图上的框架。作为另一项测试,我查看了完全相同的尺寸,清楚地表明它们位于不同的地方。非常奇怪,任何帮助都表示赞赏。

由于

2 个答案:

答案 0 :(得分:2)

你的

[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 ]|
    |[                ]|
    |[                ]|

如果您将框架设置为等于下图。

staticTable = [[UITableView alloc] initWithFrame:frame style:UITableViewStylePlain];

self.view
 |      [      |         ]
 |      [      |         ]
 |      [static|TableView]
 |      [      |         ]
 |      [      |         ]

答案 1 :(得分:1)

myPopover宽度为128,高度为150

那么如何用x cordinate添加表视图200,它必须低于128才能显示表。 frame是关于subView的坐标而不是屏幕的totall视图。