Подкласс UIView (ThumbView
) находится внутри UICollectionViewCell
. Следующий код прекрасно работает в прошивке 7 имитатора:Почему пользовательский drawRect не показан в 6.1-симуляторе?
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *identifier = @"Cell";
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
ThumbView *thumbView = (ThumbView *)[cell viewWithTag:1];
[thumbView setNeedsDisplay];
return cell;
}
Однако в версии IOS 6 тренажера:
Сетки все ушли:
Я поставил NSLog
в drawRect
ThumbView, чтобы убедиться, чтоВызывается.
Что не так?
- Xcode версии 5.0 (5A1412)
- IOS Simulator Version 7,0 (463.9.4)
UPDATE (код рисунок):
- (void)drawRect:(CGRect)rect
{
NSLog(@"%s", __func__);
[self drawGrid:rect];
}
- (void)drawGrid:(CGRect)rect
{
CGFloat margin = self.margin;
CGFloat lineWidth = 2.0;
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect gridRect = CGRectInset(rect, margin, margin);
for (NSInteger i = 1; i < 9; i++) {
CGFloat h = gridRect.size.height/9;
CGFloat y = i * h;
CGContextMoveToPoint(context, margin, y+margin);
CGContextAddLineToPoint(context, gridRect.size.width+margin, y+margin);
CGContextSetLineWidth(context, lineWidth/4.0);
if (i == 3 || i == 6) {
CGContextSetStrokeColorWithColor(context, UIColor.darkGrayColor.CGColor);
} else {
CGContextSetStrokeColorWithColor(context, UIColor.lightGrayColor.CGColor);
}
CGContextStrokePath(context);
}
for (NSInteger i = 1; i < 9; i++) {
CGFloat w = gridRect.size.width/9;
CGFloat x = i * w;
CGContextMoveToPoint(context, x+margin, margin);
CGContextAddLineToPoint(context, x+margin, gridRect.size.height+margin);
CGContextSetLineWidth(context, lineWidth/4.0);
if (i == 3 || i == 6) {
CGContextSetStrokeColorWithColor(context, UIColor.darkGrayColor.CGColor);
} else {
CGContextSetStrokeColorWithColor(context, UIColor.lightGrayColor.CGColor);
}
CGContextStrokePath(context);
}
CGFloat frameWidth = lineWidth * 2.0;
CGRect frameRect = CGRectInset(rect, 0.0, 0.0);
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) frameWidth = lineWidth * 2.0;
CGContextSetLineWidth(context, frameWidth);
CGContextSetStrokeColorWithColor(context, UIColor.darkGrayColor.CGColor);
CGContextStrokeRect(context, frameRect);
}
Есть ли опечатка в вашем вопросе, потому что имя метода - 'drawRect:'? – Amar
опечатка только в вопросе, исправлен. Благодарю. – ohho
Несмотря на то, что релиз iOS 7 находится за углом, он все еще находится под NDA, поэтому до этого момента вы вряд ли получите хороший ответ. – borrrden