2012-03-20 7 views
1

私は線/ rectを単一のビューで描画する方法を知っています。しかし、私はこの場合失われています: 私はUIView AとUITableViewを持っています。ビューコントローラーのビューにAが追加され、BがAに追加されました。ご存知のように、UITableViewには枠線がないため、以下はB. の境界に沿って、私はこれらのビューを整理する方法のコードは次のとおりです。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); 



} 

私が会った問題は: テーブルビューを追加してsetNeedsDisplayInRect:を呼び出すと、drawRect:に送信されるrectは常に{0,0,320,460}になります。 tableRectは効果がないようです。私はなぜそれが起こるのか分からない。 誰か助けてくれますか?

答えて

2

tableRectはテーブルを初期化するものなので、テーブルを制御する必要があります。正しい矩形がリフレッシュされていないと思われる場合は、矩形を指定せずにsetNeedsDisplayを呼び出します。しかし、実際にはUITableViewUIViewから継承されており、UIViewの周りに境界線を描くことができるので、カスタム描画を行う必要はありません。

インポートQuartzCore

#import <QuartzCore/QuartzCore.h> 

とこれは私が必要なものである

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

、ようのUITableViewの境界線を設定します。実際には私もlayerを使いたいと思っていましたが、その方法は見つかりませんでした。ありがとう。 – scorpiozj

関連する問題