2013-05-29 83 views
0

我有一個UITableView可變高度單元格。我寧願不必使用背景圖像,而是想用我想要的樣式設置backgroundView。目前,我無法弄清楚如何根據單元的高度動態改變我的backgroundView的高度。UITableViewCell可伸縮背景查看

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 

     UIView *view = [[UIView alloc] initWithFrame:CGRectMake(10, 10, 300, 60)]; 
     view.backgroundColor = [UIColor whiteColor]; 
     view.layer.cornerRadius = 2.0; 
     view.layer.shadowColor = [UIColor blackColor].CGColor; 
     view.layer.shadowOffset = CGSizeMake(0, 1); 
     view.layer.shadowRadius = 0.4; 
     view.layer.shadowOpacity = 0.2; 
     [cell.contentView addSubview:view]; 
     [cell.contentView sendSubviewToBack:view]; 

    } 

    ZSSLog *log = [self.items objectAtIndex:indexPath.row]; 
    cell.textLabel.text = log.logText; 
    cell.textLabel.numberOfLines = 0; 
    cell.textLabel.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:15.0]; 
    cell.textLabel.textColor = [UIColor grayColor]; 

    return cell; 
} 

眼下的背景觀點正好在同一時間,因爲他們沒有被調整:

enter image description here

這可能嗎?

回答

1

而不是設置你的背景框架來看,你可能想要做像

UIView *view = [[UIView alloc] initWithFrame:cell.contentView.bounds]; 
view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 

這個答案假設你不使用自動佈局,因爲你設置的背景視圖的框架。如果你使用自動佈局,你根本不想設置框架,而是在背景視圖上設置約束。

+0

不,不使用自動佈局或任何IB的一部分。這工作!只需要自動調整代碼。謝謝! –

0

通常情況下,您會使用backgroundView屬性。嘗試建立你的背景圖是這樣的:

UIView *view = [[UIView alloc] initWithFrame:cell.bounds]; 
view.frame = UIEdgeInsetsInsetRect(view.frame, UIEdgeInsetsMake(0, 10, 0, 10)); 
view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 
//...other cell config... 
cell.backgroundView = view; 

但如果你真的想要把contentView內這種觀點,你可以這樣做:

UIView *view = [[UIView alloc] initWithFrame:cell.contentView.bounds]; 
view.frame = UIEdgeInsetsInsetRect(view.frame, UIEdgeInsetsMake(0, 10, 0, 10)); 
view.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 
//...other cell config... 
[cell.contentView addSubview:view];