- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在 iOS 上,如果有两个圆圈,都是 UIView
对象,那么它们的 center
或 frame
可以使用 动画>UIView
动画。
但难点在于,包含这两个圆的容器UITreeView
,使用drawRect
画一条连接圆心的线。在drawRect
中,我可以使用CG
或UIKit
来画线,我选择使用UIBezierPath
的moveToPoint
和 addLineToPoint
画线,其实应该只是下面的 CG
调用,但更容易使用。
但是当一个圆圈移动到另一个位置时,直线不会随之移动,所以动画看起来有点奇怪。有没有办法让它动画化?
我尝试在 TreeView 类中而不是在 UINodeView
类(圆圈)中设置动画,但这无济于事。事实上,如果我在它的drawRect
方法中使用随机颜色绘制圆,当圆在动画中缓慢移动时,颜色不会快速变化,这表明它的drawRect
未被调用。它可能只是 CALayer
保存了一个缓存的动画图像。
那么有没有办法让线条也有动画呢?
我能想到的其他方法是:
1) 使用 hack 来使用 UIView
来保持线条,所以它的框架可以动画,但是如果圆圈移动,那么线条需要从 ( 0, 0) 到 (200, 200),但现在这条线需要向另一个方向倾斜,从 (200, 0) 到 (0, 200),所以在这种情况下,它可能不起作用。 (但是如果我同时使用某种变换来翻转图像,它可能会起作用,但考虑何时应该使用变换似乎很复杂)
2) 使用 CADisplayLink
做动画,让它调用 [treeView setNeedsDisplay];
在这种情况下,drawRect
肯定会被调用。 (这可能有点矫枉过正,因为 TreeView 的整个背景将首先被删除,因此屏幕上可能会出现一点点闪烁)
或者有没有更简单更好的方法?
最佳答案
您可以将路径分配给 CAShapeLayer (例如将其包装在返回 CAShapeLayer 作为其 +layerClass 的 UIView 子类中)。该路径被分配给 CGPath -path 属性(请注意 UIBezierPath 提供了一个 CGPath 属性)。然后你在 View 中有一条线,你可以设置动画(例如使用 UIView 的组动画 +beginAnimations.
关于ios - drawRect 绘制的内容是否可以使用 UIView 动画进行动画处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12307548/
为了澄清这个问题的目的:我知道如何使用 subview 和使用 drawRect 创建复杂的 View 。我试图完全理解何时以及为什么使用一个而不是另一个。 我也明白提前优化并在进行任何分析之前以更困
我是 Swift 的新手,正在尝试让一个非常简单的应用程序运行。我想要做的就是让 UIView.drawRect 在我按下按钮时更新。它会在应用程序首次加载时更新/绘制,然后无论我尝试什么,它都不会更
我有一个名为 Icon 的基于 UIView 的类。在那里,我想要类似于这样的代码: UIView *finalView = [[UIView alloc] initWithFrame:CGRectM
我正在覆盖 drawRect: 在我的一个 View 中,它甚至在不调用 [super drawrect:rect] 的情况下也能工作。这是如何运作的? - (void)drawRect:(CGRec
我不是很明白CALayer的display和drawInContext与 View 中的drawRect有什么关系。 如果我有一个每 1 秒设置一次 [self.view setNeedsDispla
我在 viewController 上放置了一个 View ,我想在此 View 中绘制一个矩形,但具有自定义高度。我根据 viewController 中的参数确定高度。例如。如果我的参数是 50,
这个非常简单的绘图命令创建了一个 11x11 像素的跟踪红色矩形: _sp.graphics.lineStyle( 1, 0xFF0000, 1, true, LineScaleMode.NORMAL
我每两秒从 NSTimer 函数调用 setNeedsDisplayInRect 一次。这工作得很好,并在随机位置绘制一个具有随机颜色的正方形。然而,在某些情况下,我想在 NSTimer 函数中绘制一
你好,我是新来的,也是 Java 编程的新手。最近我正在尝试在 JPanel 中编写绘图功能。问题是,当我添加新的绘制矩形(只需在 JRadiobutton 中选择绘制矩形,然后拖动空白区域)时,它工
我有一个放在WebView上方的UIView。在这个UIView中,我必须画图,但是应用程序因此错误而崩溃 在LibraryViewController.m中 self.drawView =[[Dr
我正在使用 Java 编写一个文件管理器。我需要将矩形选择添加到我的程序中,就像在 Windows 中一样(以便选择矩形内的多个文件)。我的问题是,每当我向 DrawRect 面板添加布局来放置图标时
我正在使用 UIBezierPath 创建自定义 View 绘画。每当状态根据服务器的响应发生变化时,我想更新自定义 View 填充颜色。我正在使用 fillColor属性作为参数来更新 View 的
我有一个名为 TestView 的 UIView 子类,它重写了 DrawRect ,如下所示: import Foundation import UIKit class TestView: UIVi
我的应用程序中有一个泄漏问题,我正在创建一个颜色的自动释放对象,但通过仪器说问题存在。 Malloc 1 04:12.221.102 32 UIKit +[UIColor allocW
我需要知道是否可以全局覆盖 UI 类的 drawRect。类似于“外观”类属性的东西。本质上,我需要为应用程序中的所有按钮使用我自己的绘图例程。最好我不想继承并且必须在 Storyboard 中的每个
我将绘制一条类似于下图中红色曲线的曲线(可以是贝塞尔曲线或我认为对我的目的最方便的任何曲线)。我想找到曲线上的点(illo 中的蓝点)。这些点很可能是曲线长度的相等部分的划分。 我能找到这些点吗?到目
我有两个 UIView 子类,比如“A 类”和“B 类”。类 A 在其初始化程序中具有代码 [self addSubview:instanceOfClassB];。而在 B 类的 drawRect:
我一直在使用 UITextField 的子类在我的文本字段末尾绘制一个“m3”字符串,但有些东西不起作用。我知道正在调用该方法,因为我已经使用 NSLog 对其进行了测试,我做错了什么? 我的类(cl
我有一个 UITableViewCell 的子类,我正在尝试在 drawRect 中画一条线。 有一个属性separatorColor在子类的标题中: @interface DXDecisionsTa
我将动画代码放在我的 UIView 子类的 drawRect 中。我真的在寻找类似 UIViewController 的 viewWillAppear 的东西。但我想使用 UIView 而不是 UIV
我是一名优秀的程序员,十分优秀!