问题标签 [uistackview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
693 浏览

interface-builder - Interface Builder 在 IBPlatformToolFailureHandler.m 中使用断言崩溃

在此处输入图像描述我正在使用 Xcode 7.0.1,并且几天以来,在设置 UIStackViews 的属性时,我经常遇到 Interface Builder 崩溃。

我用一个从头开始创建的非常简单的项目重现了这个问题。这个项目只包含一个带有单个 viewController 的 Storyboard,其中包含一个带有 UITableViewCell 的 UITableView,其中包含 5 个带有多个 UIStackViews 的 UILabel。

每次我更改 UIStackView Xcode 崩溃之一的几个属性时,都会出现以下错误。

有时我可以重新打开项目,有时不能(Xcode 在启动时崩溃)。我的 MacBookPro 和旧的白色 MacBook 上的同一个项目也有同样的问题,它们都运行相同版本的 Xcode 和 OS X El Capitain。

欢迎任何有关解决方法或解决方法的想法。

路径:/Applications/Xcode.app/Contents/MacOS/Xcode 标识符:com.apple.dt.Xcode 版本:7.0.1 (8228) 构建信息:IDEFrameworks-8228000000000000~5 应用项目 ID:497799835 应用外部 ID:813434267 代码类型:X86-64(本机)父进程:??? 1 负责人:Xcode [2177] 用户 ID:501

日期/时间:2015-10-10 18:29:07.206 +0200 操作系统版本:Mac OS X 10.11 (15A284) 报告版本:11 匿名 UUID:4CEF61B0-80F0-668D-225D-39382C5053E4

睡眠/唤醒 UUID:C7D655B2-BA3E-4DAF-AC3A-F9AB2B1609DC

自启动以来的唤醒时间:13000 秒自唤醒以来的时间:8800 秒

系统完整性保护:启用

崩溃的线程:0 调度队列:com.apple.main-thread

异常类型:EXC_CRASH (SIGABRT) 异常代码:0x0000000000000000, 0x0000000000000000 异常说明:EXC_CORPSE_NOTIFY

应用程序特定信息:IBDocumentDidFinishEditingNotification ProductBuildVersion:7A1001 ASSERTION FAILURE in /Library/Caches/com.apple.xbs/Sources/IDEInterfaceBuilder/IDEInterfaceBuilder-8191/InterfaceBuilderKit/Utilities/IBPlatformToolFailureHandler.m:315 详细信息:无法计算自动布局状态 IBLayoutConstraint、IBUILabel 、IBUIStackView、IBUITableViewCell、IBUITableViewCellContentView 和 IBUIView。

与 Interface Builder Cocoa Touch Tool 通信时遇到错误。如果您选择为此问题提交崩溃报告或 Radar,请将“/var/folders/q3/g2n6m_1x57583jym4b_808jw0000gn/T/IB-agent-diagnostics_2015-10-10_18-29-07_130000”中的诊断信息压缩并附加到您的崩溃中报告。

异常名称:NSInternalInconsistencyException 异常原因:{objective 0x7ff0e2677310: <1:20> + <1:1>*0x7ff0e268c6c0.marker{id: 4430}}:内部错误。为变量 UILabel:0x7ff0e4c71c20'Last Period'.Height{id:4185} 设置空向量。Exception backtrace: 0. CoreFoundation 0x0000000109dfbf4d __exceptionPreprocess 1. libobjc.A.dylib 0x0000000109875deb objc_exception_throw 2. CoreFoundation 0x0000000109dfbe9d +[NSException raise:format:] 3. Foundation 0x000000010944e930 -[NSISObjectiveLinearExpression setPriorityVector:forKnownAbsentVariable:] 4. Foundation 0x00000001095f01b7 __128-[NSISObjectiveLinearExpression replaceVariable :withExpression:processVariableNewToReceiver:processVariableDroppedFromReceiver:]_block_invoke 5.

0 投票
1 回答
3316 浏览

ios - UIStackView - 拖动以重新排列排列的子视图?

我正在尝试就如何实现在 aUITableView但在 a 上发现的相同类型的“拖动以重新排序”行为获得一些建议UIStackView

到目前为止,这就是我的想法:

  1. arrangedSubview为每个s添加一个长按手势识别器
  2. 长按时,将叠加层UIView作为子视图添加到主视图并填充整个主视图。当我拖动临时的“重新排序”视图时,这个覆盖视图将充当某种“画布”——我们称之为tempView——周围(更多内容在 4 中)
  3. 将 的 设置alphaarrangedSubview0(设置hidden = true将导致UIStackView动画关闭,就好像它已被删除一样。
  4. 使用tempView_ _arrangedSubview
  5. tempView向上或向下拖动并arrangedSubview根据tempView.
  6. 听长按state的时间.Ended并从主视图中设置arrangedSubview.alpha = 1和删除覆盖视图。

有什么建议么?任何人看到的任何明显的洞?你会改变什么?你会朝着什么方向去实现这个目标?

0 投票
4 回答
31124 浏览

ios - 在仅变换层中更改属性 contentsGravity 将无效

我开始创建一个非常简单的井字游戏。主要目标是使视图与所有 iOS 设备的所有屏幕尺寸成比例。因此,我将图像放在 a 上ViewController,使其全屏显示,然后将其放入 Stack View 中。我已经向这个 Stack View 0 添加了所有方面的约束。当我运行模拟器时,一切看起来都很好。但我在控制台面板中收到一条消息。这是什么意思?

截屏

0 投票
3 回答
3028 浏览

ios - UIStackView 孩子等间距(周围和之间)

如何让 UIStackView 具有与视图之间的填充和间隙相同的空间

我怎样才能实现这种布局:

预期布局

当这个不适合我时:

没有好的布局

这也不是:

在此处输入图像描述

我只需要周围的视图空间与视图之间的空间相同。为什么这么难?

重要的 是,我正在使用TZStackView 分支来支持 iOS 7。所以layoutMargins对我来说不是 :(

0 投票
1 回答
11411 浏览

objective-c - UIStackView 中 UILabel 的填充或边距

我想在一些嵌套的 UILabel 的右侧添加边距或填充

查看层次结构

像这里所示:

目标布局

在标签上使用尾随空格似乎是错误的,而且有点过时。

有什么方法可以让界面生成器更优雅?

0 投票
2 回答
107 浏览

ios - 如何修复视图居中之谜?

我有一个 UIStackView,它包含一个图像视图和一个文本视图。图像视图有一个活动指示器视图作为子视图(我以编程方式添加)。当视图初始视图加载时,我将活动指示器视图置于图像视图的中心并启动 AIV 的动画。但是,在等待图像加载的过程中,如果我旋转图像视图,则需要将 AIV 重新居中。我添加了代码来监听状态栏方向更改通知,并有一个方法可以在通知上调用(UIApplicationDidChangeStatusBarOrientationNotification)。在该方法中,我尝试获取图像视图的边界并使用它在图像视图中重新居中 AIV。但是,当设备方向改变时,图像视图的边界值似乎没有改变。有没有“靠谱” 设备方向更改后如何获取视图的更新边界?代码 ->

然后我有:

更新:

所以我摆脱了上述并尝试了这个:

在我看来,这是加载方法。控制台吐出这个:

2015-10-27 19:26:09.303 Historic Sites Navigator[373:93902] 视图层次结构没有为约束做好准备:添加到视图时,约束的项必须是该视图(或视图本身)的后代。如果在组装视图层次结构之前需要解决约束,这将崩溃。中断 -[UIView(UIConstraintBasedLayout) _viewHierarchyUnpreparedForConstraint:] 进行调试。2015-10-27 19:26:09.308 Historic Sites Navigator[373:93902] 视图层次结构没有为约束做好准备。约束:容器层次结构:> | > 在容器层次结构中找不到视图:> 该视图的超级视图:> 2015-10-27 19:26:09.310 Historic Sites Navigator[373:93902]* 由于未捕获的异常“NSGenericException”而终止应用程序,原因:“无法在视图上安装约束。约束是否引用了视图子树之外的内容?那是违法的。constraint: view:>' * First throw call stack: (0x2643767b 0x377b2e17 0x264375c1 0x27177983 0x2a628f85 0x2a628dd5 0x2a628cef 0x2ad33971 0x2a628bd7 0xdf6c4 0xdfe34 0x2a5271c7 0x2a526dad 0x2ad8ca09 0x2a8689ad 0x2a88c095 0x2a88e6c5 0x2a88e931 0x2a61e98​​9 0x2a891bb7 0x2ab33085 0x2ac09b39 0x2ac09967 0x2a883d95 0xccac8 0xccc10 0x2a659487 0x2a71440b 0x2a7cc0b9 0x2a7d79eb 0x2a519ecd 0x263fa4c9 0x263f87cd 0x263f8bff 0x2634c119 0x2634bf05 0x2f502ac9 0x2a58ef15 0xd6e74 0x37f21873) libc++abi.dylib:以 NSException 类型的未捕获异常终止

0 投票
2 回答
8647 浏览

ios - UIScrollView 内的动态 UIStackView

由于自 iOS7 以来的大量更新,我想问这个问题,因为我对自动布局和新堆栈视图的经验有限,我想知道在 Objective-C 中实现以下内容的最佳设计实践是什么(还不快):

在此处输入图像描述

在我看来,有一个容器滚动视图,带有一个子容器 UIView。在这个 UIView 中,有许多元素。其中一个元素是一堆 UIView,它们的数量偶尔会有所不同。

此元素后跟地图和其他视图。

这就是我计划组织它的方式: 在此处输入图像描述

问题

  1. 这是正确的做法吗?当我以编程方式删除和添加元素时,如何修改堆栈视图的高度约束?
  2. 如何通过界面生成器向 UIStackView 添加子视图?当我这样做时,子视图采用包含堆栈视图的大小。
0 投票
3 回答
11925 浏览

ios - UIStackView自己的intrinsicContentSize

我正在使用具有以下配置的 UIStackView:

每个元素都有自己的intrinsicContentSize,因此应该可以UIStackView提供自己的intrinsicContentSize. 该文档指出,spacing用作最小间距。

例子:

stackView的intrinsicContentSize.width应该是30.

相反,我得到:

这告诉我 intrinsicContentSize无法提供。

你们中的任何人都知道我是否做错了什么,这种行为是有意的还是这是一个错误?

0 投票
2 回答
4666 浏览

ios - UIStackView 错误计算 UIImageView 高度

我在 aUIStackView中包含一个UICollectionViewCell用于表示社交网络上的帖子(类似于 Instagram 单元格的样式)。UIStackView包含一个作者标题(自定义)UIView、一个UIImageView用于内容图像、一个UILabel用于帖子正文和一个UIToolbar用于操作。最终视图如下所示

UICollectionViewCell 的高度是通过设置尺寸单元格来设置的,如下所示:

问题是 UIImageView 似乎增加了 UICollectionViewCell 的大小,而没有增加图像视图的大小。这是我将大图像添加到图像视图时的结果。期望的结果是图像保持 1:1 的纵横比,受限于 UIStackView 的宽度。

正文标签和其余内容之间的间隙大小会根据我使用的图像而变化。这让我相信这只是在考虑单元格大小UIStackView时以某种方式考虑图像大小,因为从视觉上看,图像视图是正确的大小。正如您在发布的第一张图片中看到的那样,当尚未设置图像视图的图像时,单元格布局完美。

这是堆栈视图、图像视图和标签的设置代码:

有任何想法吗?

0 投票
1 回答
786 浏览

ios - 具有顶部空间的 UIView 对 UIStackView 的约束未显示在 Stackview 下方

我的问题有点难以描述:

我正在开发一个笔记应用程序。我的“创建新笔记” - 屏幕包含一个垂直堆栈视图,用于显示与新笔记关联的待办事项。在此堆栈视图下方有一个 UIView ,如果用户愿意,可以在其中向便笺添加提醒:

Stackview 下面有提醒视图

stackview 包含特定数量的子视图。我在构建用户界面时不知道这个数量,而是在运行时以编程方式添加所有子视图。我希望提醒视图始终位于我的堆栈视图下方。所以我添加了一个顶部空间约束。

顶部空间约束

但是在以编程方式将项目添加到(并因此扩大)堆栈视图时,此约束似乎没有影响。

查看重叠的堆栈视图 这就是它的样子

编辑:这是我添加子视图的代码: