- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我有一个 UITableViewCell 的自定义子类,设置了一些约束。
问题是当我尝试像这样更改一个 View 的大小时:
CGRect frm = CGRectMake(0, 0, someValue, 30);
cell.indentView.frame = frm;
其他取决于 cell.indentView 宽度的 View 根本没有移动。
会是什么情况?
此代码将起作用:
// enumerate over all constraints
for (NSLayoutConstraint *constraint in cell.indentView.constraints) {
// find constraint on this view and with 'width' attribute
if (constraint.firstItem == cell.indentView && constraint.firstAttribute == NSLayoutAttributeWidth)
{
// increase width of constraint
constraint.constant = someValue;
break;
}
}
最佳答案
这是因为您不能只更改具有自动布局约束的对象的框架(因为约束决定了位置,而不是手动设置 frame
属性 ... frame
属性将在重新应用约束时重置)。参见 this松散相关的帖子,其中演示了如何正确调整约束以移动 View 。 (在那种情况下,我们正在制作动画,这不是这里的问题,但它确实演示了如何调整约束以影响 UIView
的移动。)
简而言之,如果您想在自动布局中移动 UIView
,您一定不要尝试更改 frame
,而是调整约束本身。如果您为约束本身创建 IBOutlet
引用,这会得到简化,此时,您可以调整 NSLayoutConstraint
的常量
。
更新:
Egor 建议列举约束并编辑与所讨论的约束相匹配的约束。这很好用,但就我个人而言,我更喜欢为我要编辑的特定约束使用 IBOutlet
,而不是枚举它们并寻找有问题的约束。如果你有一个名为 indentViewWidthConstraint
的 IBOutlet
用于 indentView
的宽度 NSLayoutConstraint
,那么你可以简单地:
self.indentViewWidthConstraint.constant = newIndentConstantValue;
关于iphone - 以编程方式更改 View 尺寸时,Autolayout 似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14215641/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!