使用渐变缩放 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的主要内容,如果未能解决你的问题,请参考以下文章

使用 UIPanGestureRecognizer 移动和缩放 UIView

前端背景缩放和渐变

缩放时多个 UIView 像素化

ggplot 将颜色渐变缩放到数据范围之外

Flutter动画 --- 平移/旋转/缩放/渐变

使用 UIPanGestureRecognizer 缩放和移动 UIView