1

UIImageViewのセルの 1 つにを中央に配置しようとしていUITableViewます。これを行うには、 のサブクラスを作成し、UITableViewCellの位置を更新する必要がありimageViewました-(void)layoutSubviews。基本的に次のように、いくつかの方法を試しました。

-(void)layoutSubviews
{
    [super layoutSubviews];

    self.imageView.center = self.center;
}

これは私が望むようには機能しません。またはそのようなものには固定のパディングがimageViewあるようです。imageViewこれは、実際にはセルの実際の中心の右に少し下にあるためです。のようなものを書くとself.imageView.center.x = self.center.x;、画像の高さは中央にありますが、少し右にずれています。self.imageView.center.x = self.center.x - someValue;したがって、パディングが問題である場合、それを正しくするために次のようなものを書く必要があると思います。このパディングはどこで見つけることができますか? また、さまざまなデバイスに適切に比例しますか? それとも、パディングがなく、これは別の原因によるものでしょうか?

ちなみに、グループ化されたtableViewですが、それが何か関係があるとすれば..

そして、UIImageView の高さと幅はセルより小さくなければならないので、これがそれを押し下げているとは思いません。

どれだけずれているかを確認するためだけに、画像に一時的に境界線を追加しましたが、かなり気がかりだと思います.画像に表示されているコードは、カスタム セル クラスに追加された唯一のコードです。

これは私が得るものです: 結果

4

2 に答える 2

2

ちなみに、グループ化されたtableViewですが、それが何か関係があるとすれば..

うん!

グループ化されたテーブル ビューにはパディング (またはマージン) があり、それが何であれ不便です。問題に対処するための独自の方法がたくさんあるため、ここにコードの回答を投稿しませんが、グループ化されたテーブルビューに対して UITableView が確実にこれを行うことを知っていることが出発点です. ここには、グループ化されたテーブル ビューによって生じるスペースに対処する方法を見つけるのに役立つ他の投稿があります。幸運を!

于 2013-01-13T01:21:29.347 に答える
1

これは私のために働いた:

- (void)layoutSubviews
{
    [super layoutSubviews];
    self.imageView.center = self.contentView.center;
    self.imageView.layer.borderColor = [UIColor blackColor].CGColor;
    self.imageView.layer.borderWidth = 2.0;

    self.contentView.layer.borderColor = [UIColor greenColor].CGColor;
    self.contentView.layer.borderWidth = 2.0;
}

結果は次のとおりです。

ここに画像の説明を入力

または、次を使用できますbackgroundView

UIView *bg = [[UIView alloc] initWithFrame:self.frame];
UIImageView *img = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon"]];

[bg addSubview:img];
img.center = bg.center;

self.backgroundView = bg;
于 2013-01-12T23:24:24.137 に答える