1

私はボーダー、セクションヘッダーとセルでUITableviewを作成しようとしています。私はxibファイルを使用しています。 UITableviewとxcodeファイルを使って作成されたセル。セクションヘッダには "viewForHeaderInSection"が使われましたが、UITableviewに境界線を設定しようとすると、セクションとセルが隠れてしまいます。 enter image description hereUITableviewボーダーセクションセルを非表示

- (void)viewDidLoad { 
[super viewDidLoad]; 
// Do any additional setup after loading the view from its nib. 

self.tableView.delegate = (id) self; 
self.tableView.dataSource = (id) self; 
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero]; 
self.tableView.layer.borderWidth = 20.0; 
self.tableView.layer.borderColor = [UIColor colorWithRed:204/255.0 green:204/255.0 blue:204/255.0 alpha:1.0f].CGColor; 

}

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{ 

NSDictionary *dict = [[NSDictionary alloc] initWithDictionary:[self.array objectAtIndex:section] copyItems:YES]; 

UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 5, tableView.frame.size.width, 50)]; 
view.backgroundColor = [UIColor colorWithRed:81/255.0 green:190/255.0 blue: 168/255.0 alpha:1.0f]; 

UIView *seperatoreView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 10)]; 
seperatoreView.backgroundColor = [UIColor colorWithRed:204/255.0 green:204/255.0 blue:204/255.0 alpha:1.0f]; 

[view addSubview:seperatoreView]; 

UILabel *numberLabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, 100, 30)]; 
numberLabel.backgroundColor = [UIColor clearColor]; 
numberLabel.text = [NSString stringWithFormat:@"%@",[dict objectForKey:@"key"]]; 
numberLabel.textColor = [UIColor whiteColor]; 
[numberLabel setFont:[UIFont boldSystemFontOfSize:17.0f]]; 

[view addSubview:numberLabel]; 

NSDateFormatter *formate = [[NSDateFormatter alloc] init]; 
[formate setDateFormat:@"yyyy-MM-dd"]; 
NSDate *SDate = [formate dateFromString:[dict objectForKey:@"sDateKey"]]; 
NSDate *EDate = [formate dateFromString:[dict objectForKey:@"eDateKey"]]; 

[formate setDateFormat:@"MMM d"]; 
NSString *StartDateStr = [formate stringFromDate:SDate]; 
NSString *EndDateStr = [formate stringFromDate:EDate]; 

if([StartDateStr isEqual:[NSNull null]]){ 
    StartDateStr = @""; 

} 
if([EndDateStr isEqual:[NSNull null]]){ 

    EndDateStr = @""; 
} 

UILabel *weekDateLabel = [[UILabel alloc] initWithFrame:CGRectMake(view.frame.size.width-140, 10, 150, 30)]; 
weekDateLabel.backgroundColor = [UIColor clearColor]; 
weekDateLabel.text = [NSString stringWithFormat:@"%@ - %@",StartDateStr,EndDateStr]; 
weekDateLabel.textColor = [UIColor whiteColor]; 
[weekDateLabel setFont:[UIFont boldSystemFontOfSize:17.0f]]; 

[view addSubview:weekDateLabel]; 

return view; 
} 

私はのUITableViewの国境をしたいが、完全なセクションヘッダとセルで、誰もがそれを達成する方法を知っていますか?

+0

あなたはあなたのコードを共有していただけますか? – Kampai

+0

1つのことをしてください。私はこれが正解であるかどうかわからない。しかし、それを試してみてください。境界線の高さのサイズを大きくし、セクションヘッダーの下部にラベルを設定します。セクションヘッダをカスタマイズすることができます。 1つのデリゲートメソッドがあります。 – phani

+0

この問題を回避するにはもう1つのことができます。背景色としてtableViewの境界線の色を設定するか、境界線の幅に応じてtableViewのparentViewを左に設定します。この方法で、この問題を回避できます。 – Surjeet

答えて

0

あなたが望む動作を試してみることができます。枠線を使用する代わりに、UIViewUITableViewCellの四隅のすべてに追加して、適切な高さ/幅のそれぞれをUIViewとし、背景色として灰色を使用する必要があります。あなたのcellForRowでは、セルの位置を確認し、それに基づいて上下の表示/非表示を変更する必要があります。UIView(左右のUIViewは常に表示されます)このような何か:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    ..... 
    if(indexPath.row == 0){ 

     [cell.topBorderView setHidden: NO]; 
     [cell.bottomBorderView setHidden: YES]; 

    }else if(indexPath.row == dataSourceArray.count - 1){ 

     [cell.topBorderView setHidden: YES]; 
     [cell.bottomBorderView setHidden: NO]; 

    }else{ 

     [cell.topBorderView setHidden: YES]; 
     [cell.bottomBorderView setHidden: YES]; 
    } 

    return cell; 
} 

そしてもちろんの全体UITableView

0

上の境界線を削除するあなたのborderWidthを追加しなければならないものが多すぎるあなたがプロフィール写真ImageViewの左側を設定する必要があり セルにプロフィール画像用 ですボーダー幅の増加を伴います。

let margin_left = BorderWidth + space_from_left. 
ProfileImageView.frame = CGRect(x: margin_left,y:Y,width:yourRequiredWidth, height:requiredHeight) 
セクション・ヘッダ・ラベル用

と同じ

let margin_left = BorderWidth + space_from_left. 
    headerLabel.frame = CGRect(x: margin_left,y:Y, width:yourRequiredWidth, height:requiredHeight) 
関連する問題