Cocoa 自动布局约束 - 以编程方式填充可变数量的视图

2024-04-30

我希望能够向超级视图添加新视图,但使它们彼此之间保持恒定的垂直距离。为此,我尝试以编程方式为每个视图设置约束,但我不知道如何做到这一点。问题是我事先不知道视图的数量或相对位置。

有没有一种方法可以以编程方式为每个视图设置约束,以便无论它们相邻的其他视图如何,自动布局都会保持视图之间的恒定间距?


可能这个简短的代码片段就是您正在寻找的:

NSMutableArray* newVerticalConstraints = [NSMutableArray array];
UIView* firstView = nil;
UIView* secondView = nil;
UIView* superview = <Your container view>;
NSArray* subviews = [superview subviews];
if ([subviews count] > 0) {
    firstView = [subviews objectAtIndex:0];
    // Add first constraint
    [newVerticalConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-10-[firstView]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(firstView)]];

    for (int i = 1; i < [subviews count]; i++) {
        secondView = [subviews objectAtIndex:i];
        [newVerticalConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[firstView]-10-[secondView]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(firstView,secondView)]];
        firstView = secondView;
    }

    // Add last constraint
    [newVerticalConstraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[firstView]-10-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(firstView)]];

    [superview removeConstraints:self.verticalConstraints];
    [superview addConstraints:newVerticalConstraints];
    // Save all vertical constraints to be able to remove them
    self.verticalConstraints = newVerticalConstraints;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cocoa 自动布局约束 - 以编程方式填充可变数量的视图 的相关文章

  • 如何让程序在登录时自动启动?

    如何设置菜单栏应用程序在登录时自动启动 我希望这是默认的 我可以简单地通过在 info plist 中添加一个 bool 来做到这一点吗 此解决方案仅适用于非沙盒应用程序 LSSharedFile此解决方案中使用的功能仅适用于非沙盒应用程序
  • Xcode 10 / iOS 12 中不遵守锚点约束

    昨天这一切都在 Xcode 9 和 iOS 11 下运行 但是 更新到 Xcode 10 和 iOS 12 后 该视图不再显示 我正在视图中显示视频 今天我能听到但看不到视频 我检查了框架 发现它为零 这解释了问题 但是 与之前的版本相比没
  • 从 NSString 中去除非字母数字字符

    我正在寻找一种快速简便的方法来从文本中删除非字母数字字符NSString 可能使用的东西NSCharacterSet 但我累了 似乎没有什么返回只包含字符串中字母数字字符的字符串 我们可以通过拆分然后合并来做到这一点 组件Separated
  • 如何使用 Cocoa Autolayout 根据优先级调整两个子视图的大小?

    我正在 Cocoa 中使用自动布局 有些事情对我来说并不清楚 我在一个窗口上有 2 个视图 每个视图的宽度是父窗口宽度的1 2 View1 View2 如果我调整窗口大小 我希望首先调整 View2 的大小 View1 View2 当 Vi
  • 具有同步功能的 iPhone 离线应用程序

    我正在考虑构建一个可以在离线状态下和在线状态下一样运行的应用程序 由于应用程序在离线状态下无法与服务器通信 因此需要进行某种程度的同步 在规划 iPhone 同步离线操作时 有哪些值得阅读和开始思考的好工具 与苹果已经提供的工具来帮助解决这
  • 在视图中获取路线名称

    我尝试设计导航菜单 我有 3 个这样的项目 仪表板 Pages List Add Articles List Add 现在我想大胆Pages当用户处于此部分时 如果在Add页面我都想要粗体Pages and Add my routes ph
  • macOS 公证错误:“使用的签名算法太弱”

    我想知道是否有人熟悉这个错误 该错误仅在我将应用程序上传到 Apple 进行公证时才会发生 AppName zip AppName app Contents Resources EWSMacCompress tar gz EWSMacCom
  • UICollectionView 组合布局 - iPad 旋转时项目大小未正确更新

    我有一个目前无法解决的问题 即我正在尝试根据 iPad 位置在集合视图中设置不同数量的列 集合应在设备旋转时更新 目前 取决于设备在开始时的定位方式 第一次旋转项目的宽度未正确计算 iPad屏幕 https i stack imgur co
  • 在 iOS 7 中使用新的格式字符串说明符配置字典(复数支持)

    我正在尝试使用 iOS 7 中对复数的更复杂本地化的新支持 我创建了一个 stringsdict 文件 根据 Foundation 发行说明 以及 Cocoa WWDC 会议中的新增功能 中的信息进行格式化 我已经验证 stringsdic
  • 如何遍历 macOS 中其他应用程序的窗口/视图层次结构?

    我试图弄清楚如何获取 只读 任何应用程序的整个窗口 视图层次结构 我使用以下方式获取所有打开的窗口的列表CGWindowListCopyWindowInfo 它还返回窗口号 kCGWindowNumber 它还通过以下方式显示根窗口的共享状
  • iOS自动布局:如何动态均匀地间隔项目?

    我需要均匀地间隔 X 个项目 并且项目的容器可以具有动态宽度 并且我希望第一个和最后一个项目粘在左边缘和右边缘 0 item1 itemX 0 这样无论容器有多宽 项目总是均匀分布 如何在布局约束下实现这一点 编辑 我在想 如果我可以将 i
  • NSPopUpButton、绑定和缩短的寿命

    我试图了解使用 NSPopUpButton 是多么困难 它无疑是 Cocoa 中最难编程的用户元素 至少就我而言是这样 我想到的用例如下 我有一个名为 Port 的类 代表串行端口 属性中有一个名称字段 在 NSPopUpButton 中
  • 根据维基百科,为什么“call super”被视为反模式? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 获取实体中某个值的最大值

    我正在尝试获取核心数据中实体中属性的最大值 苹果有一个很好的例子here http developer apple com library mac documentation Cocoa Conceptual CoreData Articl
  • 如何将本机 C 类型与 PerformSelectorOnMainThread: 一起使用?

    我想打电话 void setDoubleValue double value using performSelectorOnMainThread 我认为可行的是 NSNumber progress NSNumber numberWithDo
  • Android:如何在任何东西(任何活动)之上自由绘图

    如何在所有其他活动之上绘制视图 无论它们显示什么 并且不使用透明活动或消耗其触摸事件 它就像在屏幕上的所有其他应用程序之上显示一个自定义图标 当您触摸它时该图标会做出反应 但您仍然可以触摸屏幕上的其他视图 示例 Facebook 聊天头会在
  • 调用android对话框而不淡化背景

    我有一个很好的对话框视图 我将 UserInputDialog 类设置为
  • div 中的中心文本?

    我有一个div 30px高和500px宽的 这div可以包含两行文本 一行在一行 并相应地设置样式 填充 但有时它只包含一行 我希望它居中 这可能吗 要水平居中 请使用text align center 要垂直居中 只能使用vertical
  • 在 Cocoa OS X AVPlayer 中播放 HLS (m3u8) - Swift

    基本上我正在尝试在 Cocoa Swift 中使用 AVPlayer 播放 m3u8 HLS Live Stream 我对这门语言比较陌生 所以基本上掌握了一些示例代码 http qiita com ono matope items 23d
  • NSArrayController 无需将大型数据集加载到数组中

    我想使用 NSArrayController 向 NSTableView 提供数据 我面临的问题是我不想将所有数据预先加载到数组中 然后使用数组控制器setContent 方法 我的数据模型是一个管理数百万条记录的大型现有代码库 它包含有效

随机推荐