0

グループ化されたテーブルビューセルの背景を変更したい。5つのグループ化されたセルがあるとします。上のセルは左上と右の角で丸みを帯びており、下のセルは左下と右下の角で丸みを帯びており、中央のセルには丸みを帯びた角がありません。ここに問題があります。各セルの背景を設定すると、上部と下部のセルは中央のセルと同じように見え、上部と下部の角はありません。各セルが同じように見えることなく、上部と下部のセルが丸くなるように背景を設定するにはどうすればよいですか。前もって感謝します。

編集:また別のサイドノート。テーブルビューセルに表示されるセルが1つだけの場合があります。これは、すべてのコーナーが丸みを帯びていることを意味します。では、これらすべてのケースを処理できる背景をどのように設定しますか。

4

2 に答える 2

1

セルの背景グラデーションを設定できます。この場合、cell.layer を使用しているため、角が丸くなることを気にする必要はありません。(プロジェクトのこのインポート Quartz フレームワークの場合)

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

       static NSString *CellIdentifier = @"Cell";
       UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

     if (cell == nil) 
     {
          cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

            if (indexPath.row == 0)  // first cell
            {
         // set background gradient
         CAGradientLayer *gradient =  [[CAGradientLayer alloc] init];
         gradient.position = CGPointMake(0, 0);
         gradient.frame = cell.frame; 
         gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor colorWithRed:0.207 green:0.207 blue:0.207 alpha:1.0] CGColor], (id)[[UIColor colorWithRed:0.125 green:0.125 blue:0.125 alpha:1.0] CGColor], nil];
             [[cell.layer.sublayers objectAtIndex:0] removeFromSuperlayer];
         [cell.layer insertSublayer:gradient atIndex:0];
         [gradient release];
            }
            else if (indexPath.row == 1) // second cell
            {
            //
            // Another gradient
            //
            }
      }
      return cell;
   }
于 2012-08-13T06:50:52.520 に答える
1

やってみました

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


    if (indexPath.row == 0) 
    { 
        NSLog(@"Here my first cell");
        cell.contentView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"myFirstCellPicture.png"]];
     } else {
        NSLog(@"myOtherCells");
        cell.contentView.backgroundColor  = [UIColor colorWithPatternImage:[UIImage imageNamed:@"otherCellPicture.PNG"]];

    }

}
于 2012-08-13T06:44:28.063 に答える