ios - iOS 中简单动态布局入门 (Xcode 6/Swift)

标签 ios swift uikit interface-builder xcode6

我正在开发我的第一个 iOS 应用程序,我对大小调整和布局的工作方式感到有点困惑(或者,就我而言,没有)。我觉得我想做的事情(或者应该)非常简单,但我尝试的一切都没有达到预期的结果。

在我的初始 View Controller 中,我有一个 UIScrollView:

enter image description here

以编程方式,我使用 .addSubView 添加从 XIB 加载的 subview :

var frame = scrollView.bounds
frame.origin.x = 0.0
frame.origin.y = 0.0

let view = pages[page]                // pages[page] is UIView loaded from XIB
view.contentMode = .ScaleAspectFit
view.frame = frame
scrollView.addSubview(view)

现在进入 XIB(我将 View 从“推断”更改为“自由形式”尺寸,只是为了获取此屏幕截图):

enter image description here

三个角有标签,我希望它们对齐,以便它们始终位于这些角,并且居中的文本保持居中。但是,当我运行它时,事物被放置在相同的旧无聊位置(我添加了背景,以便您可以看到问题):

enter image description here

我尝试过(不成功):

  • 使用约束来定位元素(似乎没有做任何事情,让我相信问题出在 subview 的大小上
  • 设置 subview 的各种大小和布局属性

我的截止日期很紧,所以我更喜欢一种不太复杂的方法,但最终我希望有扎实的基础知识并真正知道这里发生了什么。我的问题是多部分的(但相关):

  • 鉴于我缺乏经验,约束是定位 View 元素以便它们左对齐、右对齐、居中对齐等的最佳方式吗?
  • 我需要做什么才能使 UIScrollView 中的 subview 大小正确?
  • 如果屏幕方向发生变化,我需要执行任何特殊操作来重新布局吗?

任何建议都会有帮助:具体的技术、教程、适当的文档(我一直在阅读文档,但这是一片大森林,我感觉有点迷失)。

这是一个让 iOS 奇才大放异彩的好机会!

最佳答案

我认为这个问题的答案可能对您有帮助 - iOS Autolayout with UIScrollview: Why does content view of scroll view not fill the scroll view?

“contentView 和它的父 View (scrollView)之间的约束是scrollView 的contentSize,而不是它的frame”

关于ios - iOS 中简单动态布局入门 (Xcode 6/Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27539043/

相关文章:

ios - 可下载内容如何在 iOS 的 react native 应用程序中工作?

ios - 在 Swift 中使用 KNSemiModalViewController

swift - 仅从模块导入特定扩展

xcode - 触摸时更改 SKShapeNode 的颜色?

swift - 带有 SwiftUI View 的 UIKit TabBar

ios - 来自 UIImage 的 SKTexture 看起来不同

ios - 下标的良好行为

html - 如何在 Swift 中获取 UILabel 上的 html 链接中的代码

objective-c - [ self 自动释放] 可以接受吗?

swift - Xcode 14 UINavigationBar 问题