2012-03-20 2 views
1

줄/rect를 단일보기로 그리는 방법을 알고 있습니다. 그러나 나는이 경우에 분실된다. 나는 UIView A와 UITableView을 가지고있다. A는 viewController의 뷰에 추가되고 B는 A에 추가된다. 알다시피, UITableView은 테두리가 없으므로 나는 선을 그리려고한다.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]; 

_transparencyViewUIView로부터 상속 ZJTransparencyView의 인스턴스이며, 그 파일처럼 구현 :


- (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); 



} 

B. 의 경계를 따라 아래 나는이 의견을 정리하는 방법 코드입니다 내가 만난 문제는 다음과 같습니다. 테이블 뷰를 추가하고 setNeedsDisplayInRect:을 호출하면 drawRect:으로 전송되는 rect는 항상 {0,0,320,460}입니다. tableRect는 아무 효과가없는 것 같습니다. 나는 그것이 왜 일어나는 지 모른다. 누구도 도와 줄 수 있습니까?

답변

2

tableRect는 테이블을 초기화하는 것이므로 테이블을 제어 할 수 있어야합니다. 올바른 사각형이 새로 고쳐지지 않는다고 생각되면 사각형을 지정하지 않고 setNeedsDisplay으로 전화하십시오. 그러나 실제로는 UITableViewUIView에서 상속되고 UIView 주위에 테두리를 그릴 수 있기 때문에 사용자 지정 드로잉을 수행 할 필요가 없습니다. 가져 오기 QuartzCore

#import <QuartzCore/QuartzCore.h> 

과 같은 jQuery과의 경계를 설정

temp.layer.borderColor=[UIColor cyanColor].CGColor; 
temp.layer.borderWidth=2; 
+0

이 내가 필요로하는 것입니다. 실제로 나는 layer을 사용하고 싶지만 그 방법을 찾지 못했습니다. 감사. – scorpiozj