セルの背景として3つの画像を使用しようとしています。中間画像(繰り返し画像)、および下画像を含む。 dequeueReusableCellWithIdentifierを使用すると、うまく動作しますが、テーブルをスクロールするとすぐに画像がセル内に残りません。dequeueReusableCellWithIdentifierを使用すると、繰り返し背景として使用される画像がセルから漏れ出る
添付の画像を参照してください。
http://theutherfish.co.uk/iosss.png
これは面倒なコード
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellidentifier"];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"cellidentifier"];
}
ですこれは正常に動作しますが、私はそれがメモリ食いであると仮定します。
UITableViewCell *cell = [[UITableViewCell alloc] initWithFrame:CGRectZero];
両方の世界を最大限に活用するにはどうすればよいでしょうか?すなわちそれは動作し、メモリを大量に消費することはない。
UPDATE インデックスパス機能で行の完全細胞
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellidentifier"];
if (cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"cellidentifier"];
}
UIImageView *img1 = [[UIImageView alloc] initWithFrame:CGRectMake(5.0, 0.0, 310.0, 8.0)];
img1.image = [UIImage imageNamed:@"top.png"];
UIImageView *img2 = [[UIImageView alloc] initWithFrame:CGRectMake(5.0, 8.0, 310.0, [PullRefreshTableViewController heightForExpandingCell:text])];
img2.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"middle.png"]];
UIImageView *img3 = [[UIImageView alloc] initWithFrame:CGRectMake(5.0, [PullRefreshTableViewController heightForExpandingCell:text] + 8.0, 310.0, 8.0)];
img3.image = [UIImage imageNamed:@"tempbottom.png"];
[[cell contentView] addSubview:img1];
[[cell contentView] addSubview:img2];
[[cell contentView] addSubview:img3];
return cell;
コードの最初のサンプルは「メモリ豚」ではなく、セルを再利用する方法です。しかし、あなたはおそらくそのブロックの中で、背景画像を追加するなど、もっと多くの作業をしなければなりません。 cellForRowAtIndexPathメソッド全体を含めることができます。 – jrturton
合意した、私はメモリの問題を引き起こすかもしれないと思った2番目の作品だった。機能の残りの部分を表示するコードを更新しました – JConstantine