1

HTMLを表示できるように、それをwebviewに置き換えたいと思います。

PO(cell.subviews);
PO(cell);
PO(cell.contentView.subviews);

webview には、UITableViewCell のフレームと同じフレームが必要です。

これは私たちが得たものです:

2013-01-31 12:37:35.204 BadgerNew[3888:c07] cell.subviews: (
    "<UITableViewCellContentView: 0xa057140; frame = (0 0; 320 44); layer = <CALayer: 0xa057180>>"
)
2013-01-31 12:37:35.204 BadgerNew[3888:c07] cell: <UITableViewCell: 0xa0c37a0; frame = (0 0; 320 44); text = 'atm'; layer = <CALayer: 0xa0c8530>>
2013-01-31 12:37:35.205 BadgerNew[3888:c07] cell.contentView.subviews: (
    "<UILabel: 0xa0d12a0; frame = (0 0; 0 0); text = 'atm'; clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0xa0571b0>>"
)

さらに、さらに確認するために

po [cell textLabel]
(UILabel *) $1 = 0x0a0d12a0 <UILabel: 0xa0d12a0; frame = (0 0; 0 0); text = 'atm'; clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0xa0571b0>>

通常の UITableViewCell の最終的な標準フレームは何ですか?

私もやった

-(void)layoutSubviews
{
    PO(self);
    PO(self.textLabel);
    while (false);
}

そして得た

2013-02-01 09:36:02.048 BadgerNew[1436:c07] self.textLabel: <UILabel: 0x8923390; frame = (0 0; 0 0); clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x89e8fc0>>

でやってる

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {

    while (false);
}

同じ結果をもたらす

それから私はしました:

-(void)layoutSubviews
{
    [super layoutSubviews];
    PO(self);
    PO(self.textLabel);
    while (false);
}

再び、別の 0 フレーム。

4

1 に答える 1

2

セル内のサブビューのフレームは、の後に設定され-tableView:cellForRowAtIndexPathます。

UITableViewCellのサブクラスを作成します。これは、このような処理を行うための最良の方法です。サブクラスをオーバーライド-textLabelして自由に曲げることができます。または、オーバーライドしてのフレーム-layoutSubviewsを使用することもできます。-textLabel

最後の警告の1つは、オブジェクトの内部をいじくり回すと、iOSのどのリビジョンでも壊れてしまう可能性のある脆弱なコードが発生することです。

于 2013-01-31T06:29:38.707 に答える