2013-09-29 10 views
11

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

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

を問題は、他のすべてが、まだ再配置されませんので、私はこれを行うには良い方法がなければならないと思っています。私はすべてのものを移動するために負のオフセットを使用していることを述べている人もいますが、それぞれの方向に対して適切に拡大縮小する必要があるため、制約がどのように機能するかはわかりませんでした。私が行方不明になっているこの簡単な解決策はありますか?ありがとうございました。

+1

カスタムレイアウトが必要な場合は、これが適切な方法です。あなたはラベルのフレームも設定する必要があります。 – rmaddy

+0

これはもっと良い質問でしょう。私は追加しました //テキストラベルフレームを取得 CGRect textlabelFrame = self.textLabel.frame; textlabelFrame.origin.x = 90; self.textLabel.frame = textlabelFrame; タイトルの位置を管理します。しかし、私は考えていた、タイトルは十分に長い場合は、これも同様に左の内容をシフトしませんか?また、セルを区切る境界があり、そのビューまたはプロパティの名前が何であるか分かりません。助けてくれてありがとう。 –

答えて

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; 
} 
+1

は、iOS7を止める唯一の方法です。cell.imageViewのどちらかの側をパディングすることは、セルをサブクラス化して上記を適用することです。デフォルトの動作はimageViewフレームとインセットを0に設定しないためです。 –

+1

ある場合、私はそれを見つけることができませんでした。それは少し痛みがあり、オプションを公開するのは良いことでした。私はtableviewcellsのための境界のない画像のために、それは巨大な痛みだが、少なくともそれを回避することは可能だと思う。私はそれまでの実装方法に問題は見られませんでした。私はそれが存在する場合、より良い答えに開いています。 –

関連する問題