Я знаю, как рисовать линии / прямоугольники в одном представлении. Но я потерян в этом случае:
У меня есть UIView
A и UITableView
B. A добавляется в представление viewController, а B добавляется к A. Как вы знаете, UITableView
не имеет границы, и поэтому я пытаюсь нарисовать линию вдоль границ Б.
Ниже приведен код, как я организую эти представления:
if (_tableView) {
[_tableView release];
_tableView = nil;
}
UITableView * temp = [[UITableView alloc] initWithFrame:tableRect style:UITableViewStylePlain];
temp.delegate = self;
temp.dataSource = self;
temp.showsHorizontalScrollIndicator = NO;
temp.alwaysBounceHorizontal = NO;
self.table = temp;
[temp release];
temp = nil;
[self.table setContentInset:UIEdgeInsetsMake(1, 2, 0, 2)];
[_transparencyView addSubview:self.table];
[self.parentViewController.view addSubview:_transparencyView];
[_transparencyView setNeedsDisplayInRect:tableRect];
_transparencyView
является экземпляром ZJTransparencyView
, унаследованным от UIView
, и его файл реализации имеет вид:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
NSLog(@"%s:%@",__func__,NSStringFromCGRect(rect));
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [UIColor cyanColor].CGColor);
CGContextSetLineWidth(context, 2);
CGContextStrokeRect(context, rect);
}
Проблема, с которой я столкнулся:
Когда я добавляю табличный вид и вызываю setNeedsDisplayInRect:
, прямая отправка на drawRect:
всегда равна {0,0,320,460}. Кажется, что tableRect не имеет никакого эффекта. Я не знаю, почему это происходит.
Кто-нибудь может мне помочь?