使用渐变缩放 UIView
Posted
技术标签:
【中文标题】使用渐变缩放 UIView【英文标题】:Scale a UIView with gradient 【发布时间】:2012-02-07 15:24:25 【问题描述】:我正在开发一个动画柱形图,但遇到了一些问题。 条形图以比例动画显示。一开始,所有列都有 1 磅大小,并且会缩放到预定义的高度。
重点是:我想在列中绘制一个渐变(它们是 UIView 的子类),并希望缩放动画重新计算渐变。
到目前为止,我已经绘制了渐变,但是当列缩放时,渐变不会随它缩放。 由于视图具有 1 点高度,因此渐变仅显示为 1 种颜色。
谁能给我一个北方来解决这个问题?
【问题讨论】:
【参考方案1】:问题解决了!
我使用的是比例而不是更改视图的边界.. 是
view.transform = CGAffineTransformMakeScale(1.0, scaleY.floatValue);
必须
view.bounds = CGRectMake(view.bounds.origin.x, view.bounds.origin.y * scaleY.floatValue, view.bounds.size.width, view.bounds.size.height * scaleY.floatValue);
其中 scaleY 是之前计算的,是一个包含 Y 比例因子的 NSNumber。 不需要设置
view.contentMode = UIViewContentModeRedraw;
感谢 DarkDusk 的帮助。
【讨论】:
【参考方案2】:尝试设置contentMode
:
myView.contentMode = UIViewContentModeRedraw;
这将强制每次更改大小时重新绘制。
【讨论】:
没用。让我解释得更好。我有绘图区域(即视图),作为绘图区域的子视图,我有列(也有视图)。在列 drawRect 方法中,我绘制渐变。设置内容模式会在每次大小更改时调用drawRect? 是的,它应该在每次尺寸更改时调用drawRect:
。添加NSLog
进行检查。然后仔细检查你的渐变图。以上是关于使用渐变缩放 UIView的主要内容,如果未能解决你的问题,请参考以下文章