2013-09-23 8 views
0

Я боролся с этим с iOS 7 alpha. Сначала я думал, что это ошибка в альфа, но это все еще происходит, поэтому я делаю что-то неправильно.CoreGraphics не работает на симуляторе iOS 7.0

Во всем приложении я рисую такие вещи, как фонов клеток, и таких, как CG, но в iOS 7 он не отображается.

В качестве примера:

@interface NewManagerCell : UITableViewCell 
@end 

@implementation NewManagerCell 

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { 
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
    if (self) { 
     //some initialization code here 
    } 
    return self; 
} 
- (void)drawRect:(CGRect)rect { 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGRect bounds = self.bounds; 
    bounds.origin.y += 5; //inter-cell spacing 
    bounds.size.height -= 5; 

    CGFloat mx = CGRectGetMinX(bounds); 
    CGFloat Mx = CGRectGetMaxX(bounds); 
    CGFloat my = CGRectGetMinY(bounds); 
    CGFloat cy = CGRectGetMinY(bounds)+CGRectGetHeight(bounds)*.375; 
    CGFloat My = CGRectGetMaxY(bounds); 

    CGContextBeginPath(context); 

    CGContextMoveToPoint(context, mx, cy); 
    CGContextAddLineToPoint(context, mx+cy-my, my); 
    CGContextAddLineToPoint(context, Mx-cy+my, my); 
    CGContextAddLineToPoint(context, Mx, cy); 
    CGContextAddLineToPoint(context, Mx, My); 
    CGContextAddLineToPoint(context, mx, My); 
    CGContextAddLineToPoint(context, mx, cy); 

    CGContextSetFillColorWithColor(context, [[UIColor colorWithPatternImage:[UIImage imageNamed:@"cell-pattern"]] CGColor]); 
    CGContextFillPath(context); 

    mx += 4+CGRectGetWidth(bounds)/4-CGRectGetHeight(bounds)*.375/16; 
    Mx -= 4; 
    my += 4; 
    My -= 4; 
    cy += 2; 

    CGMutablePathRef path = CGPathCreateMutable(); 

    CGContextBeginPath(context); 

    CGPathMoveToPoint(path, &CGAffineTransformIdentity, mx, my); 
    CGPathAddLineToPoint(path, &CGAffineTransformIdentity, Mx-(cy-my), my); 
    CGPathAddLineToPoint(path, &CGAffineTransformIdentity, Mx, cy); 
    CGPathAddLineToPoint(path, &CGAffineTransformIdentity, Mx, My); 
    CGPathAddLineToPoint(path, &CGAffineTransformIdentity, mx, My); 
    CGPathAddLineToPoint(path, &CGAffineTransformIdentity, mx, my); 

    CGContextAddPath(context, path); 
    CGContextSetRGBFillColor(context, 1, 1, 1, 1); 
    CGContextFillPath(context); 

    CGContextAddPath(context, path); 
    CGContextSetRGBStrokeColor(context, .69, .69, .69, 1); 
    CGContextStrokePath(context); 

    CGPathRelease(path); 
} 
@end 

Это работало в любой вкус прошивкой до 7 и теперь перестал работать. Кто-нибудь знает, что происходит?

+0

Возможный дубликат [подкласса UITableViewCell - backgroundView закрывает все, что я делаю в drawRect] (http://stackoverflow.com/questions/3527925/subclassed-uitableviewcell-backgroundview-covers-up-anything-i-do-in- drawrect) – StilesCrisis

ответ

1

Попробуйте создать пользовательский UIView, который содержит код для рисования, а затем вы можете добавитьSubView, который находится в корневом представлении вашей ячейки.

+0

У меня была такая же проблема на прошлой неделе и придумал идентичное решение :-) Чтобы избежать подкласса, вы можете использовать что-то вроде https://github.com/hsjunnesson/UIViewDrawRectBlock. – MrMage

+0

Это умная идея! – StilesCrisis

+0

Если это ответит на ваш вопрос, отметьте это как ответ. Благодаря :) – StilesCrisis

Смежные вопросы