UIView动画中的UIButton字体大小问题

Posted

技术标签:

【中文标题】UIView动画中的UIButton字体大小问题【英文标题】:UIButton font size issue inside UIView animation 【发布时间】:2016-07-11 09:07:47 【问题描述】:

我对 UIView 中的 UIButtons 有一个奇怪的问题。视图最初被限制为 0 的高度,我正在使用

为约束设置动画
UIView.animateWithDuration(0.6, delay: 0, options: UIViewAnimationOptions.CurveEaseInOut, animations: 

        heightConstraint!.constant = height
        self.view.layoutIfNeeded()

    )  (finished) in

    

这非常有效,除了放置在其中的任何 UIButton 之外,动画视图的所有内容都按预期显示。

按钮的titleLabel 字体大小在动画期间从 0 增加到正确的大小。这些按钮没有什么特别之处;它们设置为 18 的系统字体,相对于 superview 定位。按钮框架是正确的,只是字体大小发生了变化。

我尝试过明确设置adjustsFontSizeToFitWidthcontentMode,但这些都没有效果。有趣的是,如果我在视图中添加一个普通的UILabel,就可以了。

关于发生了什么有什么建议吗?

【问题讨论】:

【参考方案1】:

通过在动画之前将高度显式设置为非零值,我设法避免了这个问题:

constraint.constant = 1
self.view.layoutIfNeeded()
self.view.setNeedsUpdateContraints()

// do animation

这解决了这个问题,虽然感觉就像是在解决我一开始做的不对的事情。

【讨论】:

在动画和约束设置之前调用 self.view.layoutIfNeeded() 就可以了。【参考方案2】:

试试clipsToBounds = true,文本隐藏在按钮内

当height为0或1时,myView为

设置clipsToBounds = true后,就是这个样子

注意 Border = 1 and height = 1 在这里只是为了表示。即使我遇到了这个奇怪的问题。但是将边界设置为true后文本不显示

【讨论】:

恐怕没有效果! 检查这个helps

以上是关于UIView动画中的UIButton字体大小问题的主要内容,如果未能解决你的问题,请参考以下文章

iPhone UIView 动画禁用 UIButton 子视图

iOS开发UIView的动画与嵌入的UIButton的问题

在自定义 UIView 上为 UIButton 设置动画

在 UIButton down/up 上协调两个 UIView 动画

导航栏中的iOS UIButton在执行变换动画后消失

动画 UIFont 大小的变化