首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从superview /superview控制器iOS请求更多空间

如何从superview /superview控制器iOS请求更多空间
EN

Stack Overflow用户
提问于 2013-03-13 19:07:05
回答 3查看 182关注 0票数 2

我最近开始开发一个支持单点触控的iOS应用程序。我的问题是关于布局过程。目前,我所有的超级视图都决定了子视图的空间大小。

代码语言:javascript
复制
override void LayoutSubviews()
{
    this.subview1.Frame = new RectangleF(new PointF(0,0), new SizeF(10, 10));
    this.subview2.Frame = new RectangleF(new PointF(0, 15), new SizeF(10, 10));
}

但现在我正试图显示一个高度依赖于内容的UITableView。那么告诉Superview我需要一个特定的高度的正确方法是什么呢?

在弹出窗口中显示UITableView时,我也遇到了同样的问题。UIPopoverController获取另一个UIViewController并将其显示在弹出窗口中。告诉UIPopoverController我需要一个特定大小的正确方式是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-24 21:48:47

感谢所有的回复,尽管他们没有完全解决我的问题。但现在我想我有了一个解决方案。

iOS本身并不支持自下而上的布局过程。因此,层次结构顶部的元素应该触发布局过程,并询问它的子视图想要多大。因此,如果新数据来自您的业务模型,ViewController首先必须对其进行处理,然后将其推送到表示数据的tableView。之后,他触发布局过程,并询问tableView它必须有多大才能在不滚动的情况下显示所有数据(只需通过ContentSize属性获取所需的大小)。

我也不知道的是,有一个特殊的属性,用于在Popover ContentSizeForViewInPopover中呈现视图控制器所需的大小。在iOS中集成了一种机制,您可以在其中监听对属性所做的更改。PopoverController侦听对此属性所做的更改,并自动调整自己的大小以适应此大小。因此,您在ContentViewController中所要做的就是设置ContentSizeForViewInPopover属性的值,然后PopoverController会自动调整大小。

票数 0
EN

Stack Overflow用户

发布于 2013-03-17 02:10:07

这应该不会太难:

  • 将父视图/弹出窗口实例传递到您的UITableViewSource中,这可以通过其构造函数、公共属性或字段等实现。
  • 当您需要修改表源中父控件的大小表单时,您应具有访问其FrameContentSize属性的权限才能执行此操作

这能解决你的问题吗?

票数 0
EN

Stack Overflow用户

发布于 2013-03-19 23:11:29

对于UITableView,您应该重写UITableViewSource的GetHeightForRow方法。此方法在渲染之前对每个单元格运行,并返回其高度。

因此,您可以基于单元格基础数据源或单元格视图直接计算高度(您可以通过NSpath属性从表中引用它)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15383555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档