- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在尝试实现一个自定义的 UIView,它基本上是一个饼状菜单(有点像分成几片的蛋糕)。
为此,我尝试从中心画一个圆和一系列线,就像图表轮中的射线一样。
我已经成功绘制了圆圈,现在我想绘制将圆圈分成几部分的线。
这是我目前所拥有的:
-(void)drawRect:(CGRect)rect{
[[UIColor blackColor] setStroke];
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGFloat minDim = (rect.size.width < rect.size.height) ? rect.size.width : rect.size.height;
CGRect circleRect = CGRectMake(0, rect.size.height/2-minDim/2, minDim, minDim);
CGContextAddEllipseInRect(ctx, circleRect);
CGContextSetFillColor(ctx, CGColorGetComponents([[UIColor yellowColor] CGColor]));
CGContextFillPath(ctx);
CGPoint start = CGPointMake(0, rect.size.height/2);
CGPoint end = CGPointMake(rect.size.width, rect.size.height/2);
for (int i = 0; i < MaxSlices(6); i++){
CGFloat degrees = 1.0*i*(180/MaxSlices(6));
CGAffineTransform rot = CGAffineTransformMakeRotation(degreesToRadians(degrees));
UIBezierPath *path = [self pathFrom:start to:end];
[path applyTransform:rot];
}
}
- (UIBezierPath *) pathFrom:(CGPoint) start to:(CGPoint) end{
UIBezierPath* aPath = [UIBezierPath bezierPath];
aPath.lineWidth = 5;
[aPath moveToPoint:start];
[aPath addLineToPoint:end];
[aPath closePath];
[aPath stroke];
return aPath;
}
问题是路径上的 applyTransform 似乎没有做任何事情。正确绘制的第一个路径手势和后面的路径手势不受旋转的影响。基本上我看到的只是一条路。在此处查看屏幕截图 http://img837.imageshack.us/img837/9757/iossimulatorscreenshotf.png
感谢您的帮助!
最佳答案
在转换路径之前,您正在绘制路径(使用 stroke
)。路径只是一种数学表示。它不是“屏幕上”的那一行。您无法通过修改相关数据来移动已绘制的内容。
只需将 [aPath stroke]
移出 pathFrom:to:
并将其放在 applyTransform:
之后。
关于ios - UIBezierPath 和 applytransform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9312722/
我在 androids 动画类的 applyTransformation 方法中得到除以零的错误: 05-15 21:13:59.330: E/AndroidRuntime(16997): java.
我有一些代码正在使用 new Animation() 它有一个方法 applyTransformation 允许您创建自定义动画。 我已经创建了一个 new Animator() 但不知道将自定义动画
这太奇怪了,我有这个动画代码: public class ExpandAnimation extends Animation { private View mAnimatedView; private
在我使用 view.startAnimation(myAnimation) 启动动画后,我的自定义动画中的 applyTransformation 方法有时没有被调用。这是一个已知问题吗? 最佳答案
我正在尝试实现一个自定义的 UIView,它基本上是一个饼状菜单(有点像分成几片的蛋糕)。 为此,我尝试从中心画一个圆和一系列线,就像图表轮中的射线一样。 我已经成功绘制了圆圈,现在我想绘制将圆圈分成
这是我的自定义 ScaleAnimation: public class MyScaler extends ScaleAnimation { private static final Stri
在 Google App Engine 上的 ImagesService 上调用 applyTransform 方法时,我开始间歇性地收到 IllegalArgumentException。 java
最近在研究android.view.animation.Animation的系统实现。 我重写了 Animation.applyTransformation() 方法,并记录了调用间隔时间,大约是 1
我正在使用 UIBezierPath 创建 3 个矩形,我想将它们旋转 45 度。我使用 applyTransform 方法并传递 CGAffineTransformMakeRotation。我已经在
我已经为 Animation 类创建了一个扩展,以便创建背景淡出动画。我在按下 ListView 行项目后启动动画。如果我一个接一个地按下,我想取消第一个动画并开始第二个。但是我遇到的一个错误是,当我
我有一个 ListView,它的项目需要用动画折叠然后删除。我使用 Animation 折叠项目,在完成折叠后我从 ListView 中删除项目(通过从数据列表中删除它并调用 notifyDataSe
我在 x 和 y 方向上按因子 2 缩放 UIBezierPath(由一个 [0,0 - 1x1] 矩形构成)。 UIBezierPath“.bounds”没问题(即按预期缩放),而“.CGPath”
我有一个自定义 View 和一个自定义动画。我的自定义 View 覆盖了 onAnimationEnd,我的自定义动画类分别覆盖了 applyTransformation。 我发现在 onAnimat
本文整理了Java中us.ihmc.robotics.math.trajectories.waypoints.YoOneDoFWaypoint.applyTransform()方法的一些代码示例,展示
我是一名优秀的程序员,十分优秀!