9

デフォルトではaccessoryViewUITableViewCellはセルの右端に配置されます。をサブクラス化して、UITableViewCellこの位置を変更して左に移動しようとしましたが、効果がなく、右に残ります。これを行う方法についてのアイデアはありますか?

- (void) layoutSubviews
{
    [super layoutSubviews];
    self.accessoryView.frame = CGRectMake(100, self.accessoryView.frame.origin.y, self.accessoryView.frame.size.width, self.accessoryView.frame.size.height);
    self.accessoryView.layer.borderWidth = 1;
    self.accessoryView.layer.borderColor = [[UIColor redColor] CGColor];
}

ここに画像の説明を入力

4

4 に答える 4

7

cell サブクラスに実装layoutSubviewsし、最初に行うこととして super を呼び出してから、変更するサブビューのフレームを変更します。

于 2013-05-27T20:04:40.740 に答える
1

これは Flea のソリューションに似ています。固定フレームではなく、指定された量だけ画像をプッシュします。

static CGFloat const kRightOffset = 10.0;

cell.accessoryView = ({UIImageView * imgV = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"image.png"]];
                CGRect frame = imgV.frame;
                frame.size.width = frame.size.width + kRightOffset;
                imgV.frame = frame;
                [imgV setContentMode:UIViewContentModeLeft];
                imgV; });
于 2014-01-30T18:02:40.940 に答える
0

マットのヒントに基づいて、これを行う唯一の方法は、自分UIImageViewの画像を使用し、選択した画像を使用してから、frame座標を必要なものに設定することでした。これにより、accessoryView拡張が可能になりました。どうやらこれがそれを操作する唯一の方法です。

UIImage *indicatorImage = [UIImage imageNamed:@"BV-icon_57x57"];
        UIImageView *view = [[UIImageView alloc] initWithImage:indicatorImage];
        view.frame = CGRectMake(0, 0, 100, 20);
        [view setContentMode:UIViewContentModeLeft];//without this line the image will just be stretched;
        cell.accessoryView = view;
于 2013-05-28T20:31:30.583 に答える