- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在努力了解 AutoLayout 的工作原理,我想我了解其中的大部分内容,但 UIScrollViews 除外。当我将这些 View 添加到项目中时,它们拒绝扩展屏幕的尺寸。它们在 iPhone 垂直 View 中会很好地显示,但在旋转时它们不会展开。此外,当您在 iPad 模拟器中启动项目时,UIScrollView 屏幕不会扩展到 iPad 的尺寸。实际的 UIScrollView 会展开,但它的内容不会展开。
我已按照 Apple (https://developer.apple.com/library/ios/technotes/tn2154/_index.html) 的说明进行操作,虽然这解决了我的动态内容高度问题,但并未解决 UIScrollView 内容未展开以匹配屏幕宽度的问题。我读过我需要将 ScrollView 的内部子项固定到 UIView 的右边缘,但这似乎有点乱七八糟,而且似乎也与上述 Apple 文档相矛盾。
这是我所拥有的:
来自 viewDidLoad 的代码:
- (void)viewDidLoad
{
[super viewDidLoad];
UIView* contentView = self.contentView;
UIScrollView * scrollView = [[UIScrollView alloc] init];
[self.view addSubview:scrollView];
[scrollView addSubview:contentView];
//remove auto contraints
[scrollView setTranslatesAutoresizingMaskIntoConstraints:NO];
[contentView setTranslatesAutoresizingMaskIntoConstraints:NO];
// Set the constraints for the scroll view and the image view.
NSDictionary* viewsDictionary = NSDictionaryOfVariableBindings(scrollView, contentView);
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scrollView]|" options:0 metrics: nil views:@{@"scrollView":scrollView}]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView]|" options:0 metrics: nil views:@{@"scrollView":scrollView}]];
[scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[contentView]|" options:0 metrics: nil views:viewsDictionary]];
[scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[contentView]|" options:0 metrics: nil views:viewsDictionary]];
}
您可以从这里下载示例项目:TestAutoLayout.zip
有没有人知道为什么尽管添加了约束,但 scrollView 内容没有扩展到 self.view 的宽度?
最佳答案
如本答案中所述:https://stackoverflow.com/a/16843937/950953 ,将 contentView 链接到主视图的宽度似乎是唯一可行的方法。
我用这部分代码修改了上面的约束代码,现在屏幕布局正确。
UIView *mainView = self.view;
// Set the constraints for the scroll view and the image view.
NSDictionary* viewsDictionary = NSDictionaryOfVariableBindings(scrollView, contentView, mainView);
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scrollView]|" options:0 metrics: 0 views:viewsDictionary]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollView]|" options:0 metrics: 0 views:viewsDictionary]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[contentView]|" options:0 metrics: 0 views:viewsDictionary]];
[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[contentView]|" options:0 metrics: 0 views:viewsDictionary]];
//hack to tie contentView width to the width of the screen
[mainView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[contentView(==mainView)]" options:0 metrics:0 views:viewsDictionary]];
如果有人能找到合适的解决方案,请发布。
关于ios - AutoLayout UIScrollView 内容在旋转时不调整大小(包括示例项目),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20806378/
在 iOS Autolayout 中,我应该添加什么约束来设置与 Superview(在我的例子中是 UIViewController 的 View )成比例的宽度和高度,使用 Autoresizin
我有一个主屏幕,三个按钮垂直对齐。我想在 4"屏幕上采用我的应用程序。所以我想平均调整按钮之间的空间以填满屏幕。看下面的图片:我怎样才能使用 AutoLayout 完成它? 绿色区域保持其大小。 最佳
我在窗口中有一个 View , View 的位置和大小是通过自动布局计算的。该 View 有一个 subview ,一个可拖动的 NSView 子类。通过覆盖 -mouseDown: 和 -mouse
在 Interface builder 中,size classes 的强大功能让您可以安装或卸载约束。在代码中,您可以通过切换 active 属性来做类似的事情。 Interface Builder
我一直在开发具有相当复杂的包含 View Controller 层次结构的企业 iPad 客户端应用程序。我最近不得不在应用程序启动 View (服务器登录 View )中重新设计。我决定借此机会使用
环境: iOS 6/7、Xcode 5 中的自动布局。 我知道要调整 NavBar 以适应状态栏,我将 NavBar 的背景图像设置为 64 位高(引用:WWDC 2013 Video Lecture
我正在尝试创建一个包含一些垂直放置的按钮的 View ,并且我希望在调整窗口大小时按钮之间的间距相等。该 View 的约束(使用视觉格式)是: H:|-0-[button1]-0-| H:|-0-[b
最近在 Xcode 5 中切换到自动布局(并且观看了 WWDC 13 的开发人员视频),我发现除了基于 View 的 NSOutlineView 之外,其他东西都可以很好地工作。 在自动布局之前,这是
这个问题已经有答案了: Seeing black bars at the top and bottom of the iPhone X Simulator (11 个回答) 已关闭 6 年前。 今天,
对于iPhone 6+的风景和肖像,我有不同的尺寸等级。如果我从横向或纵向开始运行,则不会出现任何约束错误。当我从横向或纵向切换时,会遇到约束错误。看来,如果我切换,则会同时获得纵向和横向尺寸类别约束
我遇到了 AutoLayout 的问题,这让我非常头疼。我使用 Autolayout 在 .xib 中设置了 ScrollView 和容器 View 。我需要动态地将 subview 添加到容器 Vi
我正在构建一个通用的工作流客户端应用程序,它应该使用来自多个源的工作流任务,甚至可以在理想情况下稍后添加,而无需更改应用程序代码。这个想法是应用程序将适应数据结构、类型、UI 和操作元素,理想情况下还
我得到了通常的 Unable to simultaneously satisfy constraints. Probably at least one of the constraints in th
我有以下代码,当我的应用程序出现问题时,会显示包含不同消息的警报。该代码多年来一直运行良好,并且存在于我在 App Store 上的大多数应用程序中。 我正在制作一个新应用程序,只是添加了此代码,但是
我在 UIStoryboard 中添加一个 UIView 并将其绑定(bind)到一个名为 testView 的自定义 UIView 类,接下来,我创建一个 UIView 在 require init
该应用程序允许用户发布图像/关注其他人等。 所以它工作正常,但我收到以下警告:(我知道有些与自动布局约束有关,但我如何知道哪个导致了问题?) 2015-07-05 17:19:37.701 Pixym
假设我有一个包含两列对象的 View 。第一列包含标签,第二列包含 slider 。我希望 slider 全部向左对齐。我希望所有标签都相互对齐。诀窍是,如何设置标签和 slider 之间的间距,以便
我有一个 View ,我在自动布局上设置了这个 View 。当我在 4s iphone 中更改按钮框架/位置时,我无法更改它。如何更改ios 4s中的按钮位置注意不更改自动版式属性? 这是我的代码:
我正在尝试为 iPad 和 iPhone 构建一个包含大约 10 个不同文本字段、开关和标签的表单。在这样做时,我想将 AutoLayout 与 UIScrollView 一起使用,以便它可以在 iP
我将尝试描述这个问题——以前从未见过这种行为。 当应用程序在模拟器或实际设备上启动时,我有一个按钮从应用程序屏幕的右侧移动到中间。我希望它始终位于中间(移动到的位置)。 基本上,它从父 View 上的
我是一名优秀的程序员,十分优秀!