【问题标题】:iOS Today Extension Mystery HeightiOS Today 扩展神秘高度
【发布时间】:2015-01-31 04:47:16
【问题描述】:

我目前正在开发 iOS Today Extension,但我遇到了扩展高度的问题。我已经从头开始尝试过多次,但我似乎无法弄清楚额外高度的来源。自动布局我在哪里出错了。谢谢。

故事板视图:

场景视图:

尺寸检查器:

结果:

我也尝试使用以下内容,它是这样说的:

override func viewDidLoad() {
    super.viewDidLoad()
    self.preferredContentSize = CGSizeMake(0, 100);
}

编辑:这可能是 iOS 错误吗?

我已经为此苦苦思索了一段时间,但我注意到模拟器和物理设备上有一个可重复的模式。如果我在模拟器上重置内容和设置,然后在其上运行 Today Extension,它会填满整个空间(即使它不遵守我的 100 个高度限制),但是一旦我“停止”运行它,视图就会缩小到 100高度,底部有这个额外的填充。有没有其他人经历过这个?这是一个错误还是我造成的?

第一次运行,同时“运行”:

在“停止”和随后的“运行”之后

【问题讨论】:

  • 我注意到,每当我进行更改时,如果我在模拟器上重置内容和设置,更改似乎可以正常工作。每当我尝试再次运行 Today Extension(不重置)时,它会缩小视图的高度,直到我再次重置内容和设置。
  • 你有没有想过这个问题?我有完全相同的问题。将扩展程序删除并重新添加到“今日”屏幕会修复它,直到您下次运行或刷新它。
  • @bgolson - 不,我一直无法弄清楚。我把它归结为系统错误。
  • 感谢您的跟进!终于找到答案了,贴在下面。

标签: ios xcode swift autolayout


【解决方案1】:

终于找到问题了!苹果有荒谬的默认边距,尤其是在底部。更改它们的唯一方法是实现 widgetMarginInsetsForProposedMarginInsets 方法。这是快速代码:

func widgetMarginInsetsForProposedMarginInsets(defaultMarginInsets: UIEdgeInsets) -> UIEdgeInsets {
    return UIEdgeInsetsZero
}

【讨论】:

  • UIEdgeInsetsZero 也可以使用。它是一个常量,表示所有设置为零的字段。
  • @bgolson 非常感谢!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多