写真にあるように、2つのラベルがあります。1つは4つの正方形のアイコンで、もう1つはプロフィール写真です。最初のラベルは動的にサイズ変更されていません。そして2番目は正しく整列されていません。
これを解決するにはどうすればよいですか?そのための一般的なパターンは何ですか?
今、私は真ん中のビューに別の問題があります。タイトルが大きくなっても下がらない。解決策はありますか?
更新:あなたが言ったように、私はlayoutSubviewsでそれを解決しました。どうもありがとうございます!
写真にあるように、2つのラベルがあります。1つは4つの正方形のアイコンで、もう1つはプロフィール写真です。最初のラベルは動的にサイズ変更されていません。そして2番目は正しく整列されていません。
これを解決するにはどうすればよいですか?そのための一般的なパターンは何ですか?
今、私は真ん中のビューに別の問題があります。タイトルが大きくなっても下がらない。解決策はありますか?
更新:あなたが言ったように、私はlayoutSubviewsでそれを解決しました。どうもありがとうございます!
ある種の方法を使用して、テーブルビューセルの高さを動的に計算する必要があります。
個人的には、同様のテーブルビュー形式でTwitterを使用しています。カスタムセル用に、セル.h.mを作成するだけです。
githubで元の例を見つけることができます
特に以下の(void)layoutSubviews
コードを見てください
このチュートリアルも見てください
yourcustomcell.h
#import <UIKit/UIKit.h>
@interface TwitterFeedCell : UITableViewCell {}
@end
カスタムcell.m
#import "TwitterFeedCell.h"
#import <QuartzCore/QuartzCore.h>
@implementation TwitterFeedCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
[[self detailTextLabel] setLineBreakMode:UILineBreakModeWordWrap];
[[self detailTextLabel] setNumberOfLines:NSIntegerMax];
[[[self imageView] layer] setMasksToBounds:YES];
[[[self imageView] layer] setCornerRadius:5.0];
//[self setSelectionStyle:UITableViewCellSelectionStyleNone];
}
return self;
}
- (void)layoutSubviews {
[super layoutSubviews];
CGRect rect = [[self imageView] frame];
rect.origin.x = 5.0;
rect.origin.y = 5.0;
[[self imageView] setFrame:rect];
rect = [[self textLabel] frame];
rect.origin.x = 60.0;
rect.origin.y = 5.0;
[[self textLabel] setFrame:rect];
rect = [[self detailTextLabel] frame];
rect.origin.x = 60.0;
rect.origin.y = 27.0;
[[self detailTextLabel] setFrame:rect];
}
@end
セル識別子でカスタムセルクラスを呼び出す
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"tweets";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[TwitterFeedCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
//cell = [[TwitterFeedCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
//cell.textLabel.text
//cell.detailTextLabel.text
//cell.imageView.image
}
この方法を使用して、文字列の高さと幅を計算します
+ (CGSize) calculateLabelHeightWith:(CGFloat)width text:(NSString*)textString
{
CGSize maximumSize = CGSizeMake(width, 9999);
CGSize size = [textString sizeWithFont:[UIFont fontWithName:@"HelveticaNeue-Medium" size:14]
constrainedToSize:maximumSize
lineBreakMode:UILineBreakModeWordWrap];
return size;
}
+ (CGSize) calculateLabelWidthOfString:(NSString*)textString withFont:(UIFont*)font
{
CGSize maximumSize = CGSizeMake(9999, 22);
CGSize size = [textString sizeWithFont:font
constrainedToSize:maximumSize
lineBreakMode:UILineBreakModeWordWrap];
return size;
}
ただし、テーブルビューセルの高さを動的に設定する必要があります
そのために
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return <height>;
}