セクションのヘッダーが既定の左側の代わりに表示される必要があるアプリケーションで作業しています。UITableViewセクションのヘッダーがデフォルトの左側の代わりに右側にあります。
私が検索し、多くのオタクが実装することを提案:
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
static UIView *headerView;
if (headerView != nil)
return headerView;
NSString *headerText = NSLocalizedString(@"البحث الأخيرة", nil);
// set the container width to a known value so that we can center a label in it
// it will get resized by the tableview since we set autoresizeflags
float headerWidth = 150.0f;
float padding = 10.0f; // an arbitrary amount to center the label in the container
headerView = [[UIView alloc] initWithFrame:CGRectMake(300, 0.0f, headerWidth, 44.0f)];
headerView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
// create the label centered in the container, then set the appropriate autoresize mask
UILabel *headerLabel = [[UILabel alloc] initWithFrame:CGRectMake(padding, 0, headerWidth - 2.0f * padding, 44.0f)];
headerLabel.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
headerLabel.textAlignment = UITextAlignmentRight;
headerLabel.text = headerText;
[headerView addSubview:headerLabel];
return headerView;
}
iのx座標ヘッダビューフレームのを増やそうとしたときしかし、それはビューの位置には影響しません。そして、常にテーブルビューの中央にあります。
右にヘッダーが必要です。全ての
代わりflexibleWidthと一緒に行くのは、完全な幅であることを、それを強制することはできませんか?次に、ビューは全幅を消費し、テキストの右端を正当化します。 – bryanmac
あなたは既にほとんど正しい答えを選択しましたが、余白を得るためのスペースを追加することは本当のハックです。あなたの問題を解決する適切な方法は、空のビュー(または背景色を持つビュー)を作成し、それをheaderViewとして使用することです。次に、そのコンテナビューにUILabelを追加し、右側から少しオフセットします。このコンセプトは、空のビューをコンテナとして使用して他のビューを配置することは、一般的で有用なツールです。 –
@DavidHあなたは正しいです。スペースを追加するという考えは良くありません。当分私のために働いていましたが。私は私の質問で言及したように、私はそれが必要とされているところでいつも中心に立っているということを右にしていました。フレームの設定は機能しませんでした。また、ラベルは右揃えでした。私は、UIViewを使用する方が、より多くのカスタマイズオプションを持つ方がはるかに優れていることを理解しています。コメントありがとう! –