私は、プレーンスタイルとセクションが1つしかないテーブルを持っています。私はviewForHeaderInSection:
を実装して、セクションヘッダーにカスタムビューを追加しました。ヘッダーと最初のセルの間の分離 - プレーンなUITableView
テーブルセクションのヘッダービューと最初の セルの間に区切り線がありません。私は間違って何をやっている
[添付画像を参照してください]?
私は、プレーンスタイルとセクションが1つしかないテーブルを持っています。私はviewForHeaderInSection:
を実装して、セクションヘッダーにカスタムビューを追加しました。ヘッダーと最初のセルの間の分離 - プレーンなUITableView
テーブルセクションのヘッダービューと最初の セルの間に区切り線がありません。私は間違って何をやっている
[添付画像を参照してください]?
カスタムヘッダーとフッターには、上下にセパレータが含まれていません。セパレータは、カスタム表示で独自に実装する必要があります(または、カスタムヘッダー/フッターでも上下のグループのアウトラインを表示するグループ化スタイルに切り替える必要があります)。
ジェレミーは答えたので、iOSではヘッダー/フッターの上下にセパレータを追加しません。 UIViewを使用して自分で行を作成することができます。
は、ここでヘッダビューに標準探し区切りビューを追加するコードです:
CGRect sepFrame = CGRectMake(0, headerView.frame.size.height-1, 320, 1);
seperatorView = [[[UIView alloc] initWithFrame:sepFrame] autorelease];
seperatorView.backgroundColor = [UIColor colorWithWhite:224.0/255.0 alpha:1.0];
[headerView addSubview:seperatorView];
あなたはそれが通常のテーブルビューセルのように見えるようにしようとしている場合、あなたはおそらく1つを追加する必要がありますヘッダービューの上部にも表示されます。あなただけのテーブルヘッダとテーブルの最初の行の間にスペースを与えたい場合は
ありがとう、便利なコードスニペット。興味のある人は、awakeFromNib()メソッドのカスタムヘッダーのViewクラスに配置しました。 – Tim
@ジェフ私は同じことをしました。 –
あなたが追加tableView:viewForHeaderInSection:(NSInteger)section
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 3)];
headerView.backgroundColor = [UIColor clearColor]; // use your own design
return headerView;
の方法でtableView:heightForHeaderInSection:(NSInteger)section
if(section ==0)
return 3; // (space u want to give between header and first row);
return 10; //(ur section header height)
の方法で
を使用することができますセパレータを追加するセクションに追加の「隠し」行+1
を返します。既存の行数はになります。あなたは(ヘッダの後)セクションの一番上にセパレーターをしたい場合は、indexOfHiddenRow
は0
なります
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if (indexPath.section == sectionOfHiddenRow && indexPath.row == indexOfHiddenRow)
return 0.f;
else
return [super tableView:tableView heightForRowAtIndexPath:indexPath];
}
:その後、次のメソッドを追加します。セクションの一番下(フッターの前)にしたい場合は[self tableView:tableView numberOfRowsInSection:sectionOfHiddenRow] - 1
になります。
tableView:cellForRowAtIndexPath:
の中には、非表示の行には[UITableViewCell new]
が返されます(表示されないため、フレームなどを設定する必要はありません)。 UITableViewDataSource
とUITableViewDelegate
の方法で-1
のインデックス調整を行う必要があるかもしれませんが、それは機能します(iOS 7でテスト済み)。とは一貫したスタイリングを保証します(独自の「擬似」セパレータを描く必要はありません。細く描かれたUITableView
セパレータ)。
これは実際には正しい方法です。ちょうどテストされ、それは動作します。 –
OK、一貫したスタイリングでその部分が私を納得させました。 +1 –
はハックですが華麗なアイデアのようです。 –
ヘッダービューと最初の行の間に区切り記号を追加します。 - セクションのヘッダーの表示で代行メソッドがサブビューself.separatorを追加します。// @ property(非原子的、強い)UIImageView * separator;
- (CGFloat)tableView:(UITableView *)tableView
heightForHeaderInSection:(NSInteger)section {
return 41;
}
- (UIView *)tableView:(UITableView *)tableView
viewForHeaderInSection:(NSInteger)section {
self.headerView = [[UIView alloc] init];
self.headerView.backgroundColor = [UIUtils colorForRGBColor:TIMESHEET_HEADERVIEW_COLOR];
self.separator = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"seperator.png"]];
self.separator.frame = CGRectMake(0,40,self.view.frame.size.width,1);
[self.headerView addSubview:self.separator];
return self.headerView;
}
私はSwiftのいくつかのセパレータメソッドでUITableViewCellを拡張しました。それらを使用して、ヘッダにセパレータを追加したり、通常のセルからセパレータを削除したりすることができます。私はそれが何人かの人々を助けることを望む。
public extension UITableViewCell
{
func addSeparator(y: CGFloat, margin: CGFloat, color: UIColor)
{
let sepFrame = CGRectMake(margin, y, self.frame.width - margin, 0.7);
let seperatorView = UIView(frame: sepFrame);
seperatorView.backgroundColor = color;
self.addSubview(seperatorView);
}
public func addTopSeparator(tableView: UITableView)
{
let margin = tableView.separatorInset.left;
self.addSeparator(0, margin: margin, color: tableView.separatorColor!);
}
public func addBottomSeparator(tableView: UITableView, cellHeight: CGFloat)
{
let margin = tableView.separatorInset.left;
self.addSeparator(cellHeight-2, margin: margin, color: tableView.separatorColor!);
}
public func removeSeparator(width: CGFloat)
{
self.separatorInset = UIEdgeInsetsMake(0.0, width, 0.0, 0.0);
}
}
グループ化されたスタイルに切り替えると、そのトリックが行われました。 –
グループ化されたスタイルに切り替えるには? – Imran
セパレータの高さを取り除くことはできますか? – Nil