Tag: drawrect

如何使用drawRect绘制现有的视图?

我正在做一个GPS跟踪应用程序。 每次它接收到经度/纬度时,都会将其转换为(x,y)坐标,并调用drawRect在两个(x,y)对之间绘制一条直线。 然而,drawRect方法在绘制新东西之前只清除所有的旧内容。 如何让drawRect在现有的canvas上绘制新的东西? 提前致谢 这里是我的viewController.h #import <UIKit/UIKit.h> #import <CoreLocation/CoreLocation.h> @class routetrack; @interface simpleDrawViewController : UIViewController <CLLocationManagerDelegate> { CLLocationManager *locationManager; IBOutlet routetrack *routeroute; float latOld; float longOld; float latNew; float longNew; } – (IBAction) gpsValueChanged; @property (nonatomic,retain) CLLocationManager *locationManager; @property (retain,nonatomic) routetrack *routeroute; ViewController.m #import "simpleDrawViewController.h" #import "routetrack.h" @implementation simpleDrawViewController @synthesize locationManager,btn,routeroute; – (IBAction) gpsValueChanged{ […]

drawRect和Interface Builder之间的颜色差异?

简单地说,我在界面生成器中有两个视图,一个是使用界面生成器中的RGB滑块设置为99,99,99的颜色。 另一个视图以编程方式着色以达到一定的形状。 我用它填充它: //Obviously, this is in drawRect. [[UIColor leadColor] set]; CGContextEOFillPath(myContext); //And this is a category on UIColor + (UIColor *)leadColor { return [UIColor colorWithWhite:99/255.0 alpha:1.0]; } 结果: 为什么这种差异存在? 编辑:(不必要的drawRect代码删除) EDIT2: 所以,我在这里对自己说谎。“接口build设者显示RGB 99,99,99为80,80,80,我敢打赌,它抵消了数字19。 > … …一个绝望的人使用Xcode认为这样的疯狂的东西..结果: 完善!! ,但为什么 ? 另一个Xcode错误? 我发现过去一个月里有10个人

在不使用UILabel的情况下,将draw阴影添加到drawRect:方法中的NSString文本中

我想给使用iOS提供的NSString (UIStringDrawing)类别方法绘制的文本添加阴影效果: – (CGSize)drawAtPoint:(CGPoint)point forWidth:(CGFloat)width withFont:(UIFont *)font minFontSize:(CGFloat)minFontSize actualFontSize:(CGFloat *)actualFontSize lineBreakMode:(UILineBreakMode)lineBreakMode baselineAdjustment:(UIBaselineAdjustment)baselineAdjustment; 显然,没有投影选项。 是的,可以在这里使用UILabel并设置投影属性,但这不会是性能的,因为任何UIView子类(如UILabel)包装了一个CALayer对象,并且会变得更重(性能明智)。 这是上下文: 我正在做一个UITableViewCell子类的自定义绘图,在表格单元格视图中实现drawRect:而不是从复合UIView子类的Nib文件中创build表格单元格。 合成一堆UIView子类将会破坏试图保持这种精简的目的,并保持在表视图滚动性能每秒50-60帧。 我已经尝试了两次略微偏移的string。 一旦我调整了我已经去过的单元格的背景颜色上的阴影颜色,这可能是可以接受的,但它似乎相当kludgey。 当然,没有像UILabel获得的投影模糊属性。 我search了解决scheme,他们推荐使用UILabel(我已经解决了上述问题,因为我有大约十几个不同的文本元素被合成到表单元格视图)或CGContextSetShadow() 。 后者似乎总是build议在矩形形状的上下文中,而不一定要将阴影附加到上面提到的NSString drawAtPoint…方法直接绘制的文本path上。 (我尝试过,但似乎没有工作(即没有改变);我是新的核心graphics绘图)。 build议?

iOS绘制填充圈子

这里不是一个graphics程序员,所以我试图绊倒这个。 我试图绘制9个实心的圆圈,每个都有不同的颜色,每个都有一个白色的边框。 UIView的框架是CGRectMake(0,0,60,60)。 见附图。 问题是我在两边的边界上得到“平坦的斑点”。 以下是我的代码(来自UIView子类): – (void)drawRect:(CGRect)rect { CGRect borderRect = CGRectMake(0.0, 0.0, 60.0, 60.0); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetRGBStrokeColor(context, 1.0, 1.0, 1.0, 1.0); CGContextSetRGBFillColor(context, colorRed, colorGreen, colorBlue, 1.0); CGContextSetLineWidth(context, 2.0); CGContextFillEllipseInRect (context, borderRect); CGContextStrokeEllipseInRect(context, borderRect); CGContextFillPath(context); } 如果我在drawRect中更改为CGRectMake(0,0,56,56),我只在顶部和左侧得到平坦的点,并且底部和右侧看起来很好。 任何人都可以build议如何解决这个问题? 在我看来,边界正在被UIView截取,但是对此并不了解,我真的不知道如何解决这个问题。 提前感谢您的任何graphics专家的build议。

有UIView drawRect发生在后台线程中

我想有一个UIView子类实现类似于setNeedsDisplay的方法,除了重画(即,通常会通过drawRect:调用)将在后台线程中发生,而不是在当前的更新周期结束。 它可能被称为setNeedsAsynchronousDisplay 。 或者现有的setNeedsDisplay可能会被劫持,并且不会在循环结束时导致重绘,或者任何其他操作,只要它允许重绘不会发生在主线程阻塞屏幕上,更新交互直到它完成。 在重绘之前,视图可以继续使用其当前的绘制表示。 这些线路是否合理可行? 谢谢!