【问题标题】:How to adjust view size for iPad and iPhone 4S without storyboard?如何在没有情节提要的情况下调整 iPad 和 iPhone 4S 的视图大小?
【发布时间】:2017-05-29 06:34:36
【问题描述】:

我不知道如何在没有情节提要的情况下调整 iPad 和 iPhone 4S 的视图大小。

自动布局是否仅用于情节提要?不能通过代码设置吗?

例如,如果我根据舞台制作具有不同内容的游戏,那么我认为使用情节提要不是正确的方式......

有没有一种好方法可以在没有情节提要的情况下调整 iPad 和 iPhone 4s 的视图大小?

【问题讨论】:

  • 是的,当然可以,自动布局不仅用于情节提要,您也可以在代码中使用,尽管这需要更多时间。当然,这取决于您的 UI 的外观,某些视图(例如 table from0 UITableViewController )会自动占据整个屏幕,而不管目标设备是什么。无论如何,看看Programmatically Creating Constraints
  • 你的问题暗示了一些东西 - 你使用了“游戏”这个词。你在说SpriteKit?如果是这样,请为此添加标签,我会删除 iOS 和 Xcode 标签。事实是,使用UIKit 在代码中声明自动布局实际上非常简单(我很少使用故事板),但我相信 SpriteKit 不使用自动布局。
  • @dfd 我不使用 SpriteKit,只谈论 sprite kit。无论我制作任何应用程序,我都想使用自动布局或类似的东西而不需要故事板。
  • (1) 在我看来,SpriteKit 和“sprite kit”没有区别。虽然这可能是一个沟通问题,但它很重要。 SpriteKit 不能使用自动布局。 (2) 提供的答案应该让您知道,是的,自动布局(使用UIViews,而不是SKViews)很容易实现,并为您提供了一个很好的开始。 (3) 我想我对你的具体问题就是 - 你有什么具体问题或问题?
  • 对不起,我会小心的。我的问题是我无法在没有情节提要的情况下调整 iPad 和 4s 的所有对象的大小。当我搜索如何调整对象的大小时,很多人说“使用故事板自动布局”。但是现在我不使用情节提要(当我设置对象时,我编写代码,而不是在情节提要上添加对象)。有人说“View size * 0.8 很好”,但如果我使用这种方式,当我在 iPad 上构建我的应用程序时,它对于 iPad 显示来说有点小。我想在 iPad 和 4s 上显示所有对象,就像 5s 和 SE 等其他类型一样。但是没有故事板我不知道如何解决这个问题

标签: ios objective-c swift xcode ipad


【解决方案1】:

您的问题的答案是:是的。

在没有 IB 的情况下使用自动布局相当简单。但其中涉及许多步骤。

这是一个快速示例,在 viewController 中将子视图设置为与主视图相同的大小(可以在 viewDidLoad()、viewWillAppear() 等中)

self.view.addSubview(viewToAutosize)
viewToAutosize.translatesAutoresizingMaskIntoConstraints = false
viewToAutosize.leftAnchor.constraint(equalTo: view.leftAnchor).isActive = true
viewToAutosize.rightAnchor.constraint(equalTo: view.rightAnchor).isActive = true
viewToAutosize.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
viewToAutosize.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true

一些陷阱:

您需要在要自动调整大小的视图上将 translatesAutoresizingMaskIntoConstraints 设置为 false。

除非视图已作为子视图添加,否则您无法修改约束(您要约束的视图需要位于相同的视图层次结构中——请参阅上面的第一行代码)。

您必须手动激活约束。我只展示了一种可能的方法。

您应该在 Google 上搜索自动“以编程方式布局”(不带引号)并选择您熟悉的教程、视频或 Apple 文档以了解更多信息。自动布局可以做很多事情,这绝对是未来,因为越来越多的设备尺寸一直在增加。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多