6

ここに画像の説明を入力

画像が示すように、テーブル ビュー セルに水平パディングを追加したいと考えています。

幅が 314 ピクセル (画面の幅は 320) の のサブクラスを作成し、UITableViewCellそのフレームをinitWithCoderメソッドに設定しました。

[self customizeXPosition:self.profileImage];
[self customizeXPosition:self.birthdayLabel];
[self customizeXPosition:self.heightLabel];
[self customizeXPosition:self.weightLabel];

これは私の- (void)customizeXPosition:(UIView *)viewです:

- (void)customizeXPosition:(UIView *)view {
    CGRect tmpRect = view.frame;
    tmpRect.origin.x += 3.0;
    view.frame = tmpRect;
}

カスタム セルは画面よりも小さく、セル内のすべての要素を 3 ピクセル右に移動しました。このコードは私の目標を達成するはずだと思っていましたが、そうではありませんでした。コードを書いていないのと同じように、シミュレーターでビューは変更されませんでした。

どうすれば目標を達成できますか?

4

3 に答える 3

6

この投稿に従って、UITableViewCell の -setFrame メソッドをオーバーライドしてみてください。

グループ化されたスタイルで UITableView のセルの幅を設定する方法

迅速なバージョン

于 2013-10-29T07:26:18.473 に答える
3

@faterpig は多くの状況で正しいです。ただし、フレームを設定すると自動レイアウトが壊れる場合があります。

フレームの設定が原因で自動レイアウトが壊れてUIViewいる場合は、セルよりも幅が短い を に追加して、contentViewcontentViewの UI 要素をビューに配置できます。

次の設定を行うことで、「水平パディング」のあるセルを取得できます。

cell.backgroundColor = UIColor.clearColor()
cell.contentView.backgroundColor = UIColor.clearColor()
于 2015-11-07T16:30:35.953 に答える
2

これは、ビュー内のパディングに適しています。

yourView.layer.sublayerTransform = CATransform3DMakeTranslation(10, 0, 0);

于 2014-09-10T16:01:03.403 に答える