11

iOS 6 以前では、uitableviewcell の imageView は、オフセット 0 でずっと左側に配置されていました。iOS 7 ではこれが変更され、現在 15 ポイントのスペースがあります。iOS 6 のように imageView を配置したいと思います。すでに uitableviewcell を AKHighlightableAttributedCell でサブクラス化して、強調表示されていない属性付きテキストに対処しています。だから私が追加したいくつかの検索に基づいて:

- (void) layoutSubviews
{
    [super layoutSubviews];
    // Makes imageView get placed in the corner
    self.imageView.frame = CGRectMake( 0, 0, 80, 80 );
}

問題は、他のすべてがまだ再配置されていないことです。そのため、これを行うためのより良い方法があるに違いないと考えています. 負のオフセットを使用してすべてを移動することに言及している人を読んだことがありますが、方向ごとに適切にスケーリングする必要があるため、これが制約でどのように機能するかわかりませんでした. 私が見逃しているこれに対するより簡単な解決策はありますか?ありがとうございました。

4

1 に答える 1

7

私は正しい方法でそれをしていたようです。フィールド間の仕切りに関する欠落部分は、iOS 7 でインセットを設定することでした。viewdidload または viewwillload でこれを行い、self.tableView.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0); を設定できます。

これは私が信じている新しいプロパティであるため、iOS 7 以降を実行している場合はチェックを追加する必要があります。より良いオプションは、テーブル ビューを選択してストーリーボードに設定し、セパレータ インセットをデフォルトからカスタムに設定することです。

imageView と textLabel を再配置する layoutSubviews メソッドを次に示します。説明がある場合は、それも追加します。

- (void) layoutSubviews
{
    [super layoutSubviews];
    // Makes imageView get placed in the corner
    self.imageView.frame = CGRectMake( 0, 0, 80, 80 );

    // Get textlabel frame
    //self.textLabel.backgroundColor = [UIColor blackColor];
    CGRect textlabelFrame = self.textLabel.frame;

    // Figure out new width
    textlabelFrame.size.width = textlabelFrame.size.width + textlabelFrame.origin.x - 90;
    // Change origin to what we want
    textlabelFrame.origin.x = 90;

    // Assign the the new frame to textLabel
    self.textLabel.frame = textlabelFrame;
}
于 2013-10-01T01:18:02.887 に答える