Tag: drawrect

在drawRect中旋转NSString

我想旋转我的NSString在一个设置的位置,以便从底部向上读取。 我知道问题出在CGContextTranslateCTM,但我不知道如何解决它。 如果我评论这一行,我会看到我想要的文字,而不是旋转。 这必须将我的NSString移动到不可见的地方。 思考? 以下是我所尝试的: NSString * xString = [NSString stringWithFormat:@"%@", self.xStringValue]; CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(), [[UIColor blackColor] CGColor]); CGContextSaveGState(UIGraphicsGetCurrentContext()); CGContextTranslateCTM(UIGraphicsGetCurrentContext(), 0, 0); CGContextRotateCTM(UIGraphicsGetCurrentContext(), M_PI/2); [xString drawInRect:(CGRectMake(x, y, width, height) withFont:self.Font]; CGContextRestoreGState(UIGraphicsGetCurrentContext()); 编辑: 上面的代码是绘制我的NSString值,但他们正在屏幕上的位置,我看不到他们。 这个代码实际上是让他们在屏幕上,而不是在正确的地方。 X和Y都是计算的距离。 – (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSaveGState(context); CGAffineTransform transform = CGAffineTransformMakeRotation(-90.0 * M_PI/180.0); CGContextConcatCTM(context, transform); CGContextTranslateCTM(context, -rect.size.height-x, rect.size.height-y); CGContextSetFillColorWithColor(UIGraphicsGetCurrentContext(), [[UIColor […]

捕获UIView的UIImage卡在DrawRect方法中

我想捕捉我的UIView的图像,但是当我调用这个方法 – (UIImage *) imageWithView:(UIView *)view { UIGraphicsBeginImageContext(view.bounds.size); [view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage * img = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return img; } 我的应用程序进入我的视图的DrawRect方法,并卡在这些行的循环 [super drawRect:rect]; [curImage drawAtPoint:CGPointMake(0, 0)]; mid1 = midPoint(previousPoint1, previousPoint2); mid2 = midPoint(currentPoint, previousPoint1); context = UIGraphicsGetCurrentContext(); [self.layer renderInContext:context]; 这是我的drawRect方法 – (void)drawRect:(CGRect)rect { [super drawRect:rect]; [curImage drawAtPoint:CGPointMake(0, 0)]; mid1 = midPoint(previousPoint1, previousPoint2); mid2 = midPoint(currentPoint, previousPoint1); […]

如果drawRect:被覆盖,子类UIView显示黑色背景

我有一个自定义的类,我从UIView类派生。 我想要完成的只是绘制垂直黑线与之间的预定义距离。 当我重写drawRect方法并写我的代码来绘制垂直线时,视图只显示一个完整的黑色背景。 然后我注意到,即使是一个空的重写drawRect只调用超类的drawRect结果在黑色的背景。 当我注释掉drawRect的时候,视图就会显示出来,并且如我所期望的那样变得透明。 这是我在调用超类方法的drawRect中唯一使用的代码: – (void)drawRect:(CGRect)rect { [super drawRect:rect]; } 什么可能是这种行为的原因?

触发drawRectbutton来重绘视图

我有一个子视图的VC。 在subview level我有一个button。 我希望button导致视图被更新。 IBAction代码在VC中。 它目前所做的只是切换一个BOOL值。 返回子视图drawRect:方法是testingBOOL并相应地更改视图的代码。 我的观察是,当按下button时,IBAction代码运行,切换BOOL ,但drawRect:方法不被调用。 我尝试手动调用drawRect(不好的做法,并没有工作)。 我试图调用setNeedsDisplay,但也没有工作(不知道如何引用子视图,这是创build程序)。 build议欢迎。 IBAction代码是微不足道的,但包括如下: – (IBAction)rotateWindowButtonWasPressed:(id)sender { // just flip the boolean here. Need to make the code change in drawRect: in top2View.m if ([myGlobals gWinVertical]) [myGlobals setGWinVertical:NO]; else [myGlobals setGWinVertical:YES]; // Hoping this would force a redraw, but bounds have to change…:( //_top2ViewOutlet.contentMode = UIViewContentModeRedraw; […]

drawRect不想绘制任何东西

我有一个故事板上的ViewController。 我已经使用界面生成器在屏幕底部设置了一个工具栏。 我已经将自定义视图设置为一个视图覆盖drawRect。 但是,在我的生活中,我从来没有得到任何东西在屏幕上显示,从drawRect调用。 drawRect本身被称为很好,但没有任何显示在屏幕上。 此外,我有这个ViewController的方法,使用AVCaptureSession切换到相机input实时视图的背景。 我怀疑这可能是错误的原因,但删除AVCaptureSession的所有引用后,我仍然无法得到这个工作。 对不起,我的写作和/或缺乏逻辑,我现在没有任何睡眠。 编辑:这是一个不能工作的小例子。 里面的每个方法都被调用,但是没有什么是显示的。 – (void)drawRect:(CGRect)rect { [super drawRect:rect]; CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor); // Draw them with a 2.0 stroke width so they are a bit more visible. CGContextSetLineWidth(context, 2.0); CGContextMoveToPoint(context, 0,0); //start at this point CGContextAddLineToPoint(context, 100, 100); //draw to this point // and now […]

UIBezierPath没有按预期更新

这是我的自定义视图的代码: class CircleView3: UIView { let endPoint = 270.0 var index = 0.0 var startPoint: Double { get{ index++ let div = 360.0/60.0 let vaule = div * index return 290.0 + vaule } } func degreesToRadians (number: Double) -> CGFloat { return CGFloat(number) * CGFloat(M_PI) / 180.0 } override func drawRect(rect: CGRect) { super.drawRect(rect) […]

drawRect:速度和CGContextDrawRadialGradient(超慢?)

我有我的UIView子类的drawRect:函数的问题。 我在其中使用CGContextDrawRadialGradient() ,它。 当用户拖动我的UIView时,如果包含渐变的话,它会很难跟上。 使用时间事件探查器我发现,我的时间drawRect 98%是花在我的子类drawRect :方法中的。 第一:会使用一个渐变的静态图像更快? 第二:有什么办法可以加快速度? 我能以某种方式caching渐变吗? 它不会改变很多,但是绕着它的path和相交它会在你拖动UIView时候改变。 如果有人知道如何使drawRect:的一般指南drawRect:方法不吸所有的CPU周期,这将是可怕的。

在layoutSubviews中调用setNeedsDisplay?

考虑在drawRect:绘制自定义背景的视图drawRect: 如果视图更改大小,则需要重绘背景。 这是一个坏主意吗? – (void) layoutSubviews { [super layoutSubviews]; [self setNeedsDisplay]; } 如果是这样,考虑到我无法控制谁改变了视图的大小,那么更好的select是什么?

ios4中的导航栏自定义在ios5中不起作用

我知道这个问题看起来和其他人一样,但是他们都没有提到ios4和ios5之间的不兼容问题。 在我的应用程序中,我想自定义导航条的模式,但我的部署目标是ios4,所以我使用上面的代码执行appDelegate.m以下代码来执行此操作: @implementation UINavigationBar (CustomImage) – (void)drawRect:(CGRect)rect { UIColor *color = [UIColor blackColor]; UIImage *image = [UIImage imageNamed: @"nav_bar.png"]; [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)]; self.tintColor = color; } @end 当我运行应用程序使用4.3模拟器,它工作正常,但是当我模拟ios5,它不工作,导航栏回到默认颜色..任何帮助? 谢谢。

为什么drawRect留下部分图像?

这是我的情况: 我有一个包含餐馆列表的表格,每个条目显示使用drawRect绘制的记分栏上随着时间的检查结果。 当用户向下滚动表格然后向上滚动时,就会显示带有黄色和红色方块的记分栏,以前的记分栏会显示这些方块。 date也被引入到之前的记分栏中。 我的问题在于摆脱旧的方块。 每次drawRect被调用时都不应该被擦除吗? 我已经放置了三张图片,希望能够解释我的意思。 我不认为这是表格行caching自定义单元格的问题? 这里,一旦UITableCellbuild立单元出队,绘制得分条; 单元格中的所有其他视图都是正确的,这让我觉得问题在于drawRect无法清除graphics上下文。 – (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.row < self.establishments.count) { return [self establishmentCellForIndexPath:indexPath]; } else if (self._noResultsFound) { return [self noResultsCell]; } else { return [self loadingCell]; } } – (UITableViewCell *)establishmentCellForIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"EstablishmentCell"; DSFEstablishment *establishment = [self.establishments […]