ios - UIView 自动调整大小

标签 ios uiview autoresize autoresizingmask

我可以很容易地花几个小时(如果不是几天的话)来解决这个问题(我已经花了几个小时!!!)

我有一个包含 subview (见附图)的 UIView,并且是在它作为 subview 添加到任何东西之前构建的。

enter image description here

在某个时间点,我将它作为 subview View 添加到 UITableViewCell。我叫

[tableViewCell.contentView addSubview:mySubview]
    //....
[mySubview setBounds:tableViewCell.contentView.bounds]

当我初始化我的 subview 时,我有:

[self setAutoresizesSubviews:YES]

从我的图形中,您可以看到我假设只有宽度发生变化。我需要做什么才能使 mySubview 的右侧 subview 扩展到全宽,同时保持其原始位置?

我很容易在我的想法中完全错误地处理这一切,我欢迎任何建议!

编辑 非常感谢您的帮助,Khanh Nguyen

因此,正如我之前所说,当我初始化 v1 时,(并且根据定义 v2)我不知道 v1 的维度。

当我知道我想要放置 v1 的边界时,我假设我可以做这样的事情:

[v1 setBounds:(some CGRECT)];
v2.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin;

或者 C 我只是在 v2 实例化后立即在 v2 上设置 autoresizingMask(当我仍然不知道 v1 的尺寸时)?

最佳答案

如果你有 View v1 , 它的 subview v2你想要v2具有固定的左边缘,而其宽度在 v1 时发生变化调整大小(即 v1 的右边缘和 v2 的右边缘之间的距离是恒定的),使用这个:

v2.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin;

对于 swift :

v2.autoresizingMask = [UIViewAutoresizing.flexibleWidth, UIViewAutoresizing.flexibleBottomMargin]

默认情况下,autoresizesSubviews是是的。你不需要设置它。

编辑

每个 View 都有维度,即使您不知道(如果您想知道,只需执行 NSLog)。如果 View 刚刚被初始化,它的维度可能是 (0, 0)。 autoresizesSubviews 即使在那种情况下也能工作,只要您知道 subview 和父 View 之间需要多少间距。

例如,你想要v2距离 v1 10px左边距为 20px,右边距为 20px,如下所示

// v1 has been initialized, and its dimensions are unknown (to you)
// It's probably (0, 0), but that doesn't matter
// 30px = 10px + 20px
v2.frame = CGRectMake(10, 0, v1.bounds.size.width - 30, 100);
v2.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin;

注意第三行,v2.frame如果 v1 将被设置为一些负数最初大小为零,但在 v1 时为后者的框架设置为适当的大小(由您或 UITableViewCell ),v2将相应地调整大小(由于自动调整约束)并成为您想要实现的目标。

关于ios - UIView 自动调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17703925/

相关文章:

ios - iOS 中自动布局和自动调整大小的基本区别是什么

html - 如何使用 css/html 创建凸起的标签栏元素,例如在 Instagram 或 Dailybooth 中找到的元素

ios - UIScrollView 中 subview 放错位置

iphone - UIImageView 单元格 contentView 的 View 之一未与其父 View 一起扩展

java - 计算 JTable 的最宽列

ios - UITableViewCell 调整大小不会影响触摸区域

ios - Xcode 中的快速变量检查

ios - iOS 8 中的自定义字体未显示

iphone - 按方法的返回值对对象进行排序

ios - 在 SwiftUI 中,如何在 UIView 中或作为 UIView 使用 UIHostingController?