更改视图大小后tableview消失

发布于 2024-10-14 05:43:53 字数 1268 浏览 3 评论 0原文

以下代码:

self.dataTableViewController = [[DataTableViewController alloc] initWithStyle:UITableViewStylePlain];
CGRect tableViewRect = self.dataTableViewController.view.frame;
tableViewRect.origin.x = 0.0f;
tableViewRect.origin.y = 91.0f;
//tableViewRect.size.width = 320.0f;
//tableViewRect.size.height = 613.0f;
self.dataTableViewController.view.frame = tableViewRect;
[self.view addSubview:self.dataTableViewController.view];

我的 tableviewcontroller 显示出来,一切正常,它也位于正确的位置。 但我的桌子的尺寸不正确。如果我取消注释 size 属性的两行代码,则 tableview 会从我的 uiview 中消失,我不知道为什么。

一些想法?

//编辑:

好吧,有一个奇怪的行为。 我的 tableview 显示的视图控制器位于 splittableviewcontroller (左侧)

self.contentSizeForViewInPopover = CGSizeMake(320.0, 704.0); 对我的 popovercontroller 没有任何影响。我将其保留为默认值,来自 splittableviewcontroller 模板。如果我处于纵向模式,它始终是全高。

取消注释 tableViewRect.size.height = 613.0f; 有效,取消注释宽度则不行。将我的高度设置为 613px 我得到一个高 313px 的桌面视图。什么!?将我的高度设置为 913.0f 有效,无论是横向还是纵向都非常完美。我不明白的是,在横向它应该只有 613px 高。我想将弹出窗口的高度设置为与横向视图控制器相同的高度,以便我的桌面视图始终为 613 高。不知道那里发生了什么。

我的桌面视图为 913px:

landscape

“肖像”

following code:

self.dataTableViewController = [[DataTableViewController alloc] initWithStyle:UITableViewStylePlain];
CGRect tableViewRect = self.dataTableViewController.view.frame;
tableViewRect.origin.x = 0.0f;
tableViewRect.origin.y = 91.0f;
//tableViewRect.size.width = 320.0f;
//tableViewRect.size.height = 613.0f;
self.dataTableViewController.view.frame = tableViewRect;
[self.view addSubview:self.dataTableViewController.view];

my tableviewcontroller shows up and everything is working, its also positioned on the right position.
but the size of my table is not correct. if i uncomment my two lines of code for the size property, the tableview disappears from my uiview and i have no idea why.

some ideas?

// edit:

okay there's a strange behavior.
my viewcontroller where my tableview gets displayed is in a splittableviewcontroller (left side)

self.contentSizeForViewInPopover = CGSizeMake(320.0, 704.0); does not have any effect on my popovercontroller. i left it default, from the splittableviewcontroller template. its always the full height if i'm in portrait mode.

uncommenting tableViewRect.size.height = 613.0f; works, uncommenting the width not. setting my height to 613px i get a tableview which is 313px high. What!? Setting my height to 913.0f works, its perfect in landscape AND portrait. what i don't understand is, in landscape it should only be 613px high. and i would like to set the height of my popover to the same height as my viewcontroller in landscape, so that my tableview is always 613 high. no idea whats happening there.

my tableview with 913px:

landscape

portrait

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

撩人痒 2024-10-21 05:43:53

您正在尝试将表视图作为另一个视图的子视图插入。然后你尝试指定一个框架。
可能发生的情况是,即使您指定了框架,您的表格仍然是另一个视图的子视图,然后它将受到您最初设置的任何自动调整大小规则的约束。那么您是否检查过显式设置框架与表自动调整大小掩码不冲突?
特别是,您可以尝试通过设置表自动调整大小掩码的值

UIViewAutoresizingNone

(do this in the viewDidLoad method is recommended).

You are trying to insert the table view as subview of another view. Then you try to specify a frame.
What may happen is that even if you specify the frame, your table is still a subview of another view and then it will be subject to any autoresizing rule you may have initially set. So have you checked that setting the frame explicitly is not conflicting with the table autoresizing mask?
in particular, you can try by setting for the table autoresizing mask the value

UIViewAutoresizingNone

(do this in the viewDidLoad method is recommended).

在你怀里撒娇 2024-10-21 05:43:53

它对我有用...您的代码是在表视图控制器内还是在其他一些类中?我尝试了这个(并且它有效):

CGRect tableViewRect = self.tableView.frame;

tableViewRect.origin.x = 0.0f;
tableViewRect.origin.y = 91.0f;
tableViewRect.size.width = 320.0f;
tableViewRect.size.height = 613.0f;

self.tableView.frame = tableViewRect;

[self.tableView setNeedsLayout];
[self.tableView setNeedsDisplay];

顺便说一句,我认为 iPhone 的尺寸是 320 x 480,所以我不确定你为什么在那里使用 613。

It works for me... Is your code inside a table view controller, or in some other classes? I tried this (and it works):

CGRect tableViewRect = self.tableView.frame;

tableViewRect.origin.x = 0.0f;
tableViewRect.origin.y = 91.0f;
tableViewRect.size.width = 320.0f;
tableViewRect.size.height = 613.0f;

self.tableView.frame = tableViewRect;

[self.tableView setNeedsLayout];
[self.tableView setNeedsDisplay];

BTW I think iPhone's dimension is 320 x 480, so I'm not sure why you're using 613 there.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文