web-dev-qa-db-ja.com

iOS9で非表示にならないUITableviewセパレーター

コーディングでUITableViewを実装しました。 UITableViewCellSeparatorStyleNoneも設定しました。 iOS8以下では非表示になっていますが、iOS9ベータでは非表示ではありません。

18
Piyush Hirpara

LayoutSubviewsメソッドでセパレータスタイルをNoneに設定してください。

制約ベースのレイアウトが使用される場合、基本実装は制約ベースのレイアウトを適用し、separatorStyleをUITableViewCellSeparatorStyleに設定します。このメソッドのNoneは、セパレーターを非表示にします。

23
Dhvani Puar

私も同じ問題に直面しています。私の回避策はただ設定することでした

tableView.separatorColor = UIColor.clearColor()

5
Natanel

私の調査によると、iOS9のせいではなく、Xcode7.0ベータ4です。

Xcode 7.0ベータ4を使用してアプリをビルドすると、InterfaceBuilderで[なし]に設定されている場合でもセル区切り文字が表示されます。 Xcode 6.4または7.0ベータ3で同じコードをビルドした場合、セパレーターは表示されません。

回避策として、ViewControllerでこれを明示的に呼び出すことができます。

self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;

(私はibtoolに問題があると思います)

5
Matthew

Appleデベロッパフォーラム からの解決策は私のために働いた:

すべてのreloadDataメソッド(ios 9.1)の前にUITableViewCellSeparatorNoneを設定することで、セパレーターを削除できます。理由はわかりませんが、UITableViewは、reloadDataメソッドが呼び出された後、時間ごとにseparatorStyleとseparatorColorをリセットします。

3
f3n1kc

セパレータのスタイルを.Noneに設定しても機能しなかったため、ハックの回避策としてEdgeインセットを使用しました。

self.tableView.separatorInset.left = UIScreen.mainScreen().bounds.width
2
jnoor

私は同じ問題を抱えていて、iOS 8で正常に動作しましたが、iOS9でセパレーターを表示します。セパレータのスタイルをすでにnoneに設定していました。以下は私のためにそれを解決しました

if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) {
        cell.preservesSuperviewLayoutMargins = NO;
    }
    cell.separatorInset = UIEdgeInsetsMake(0.f, 0.f, 0.f, cell.bounds.size.width);
    if([cell respondsToSelector:@selector(setLayoutMargins:)]) {
        cell.layoutMargins = UIEdgeInsetsZero;
    }

これは基本的に、はめ込みを使用してセパレーターを押しつぶします。

1
Zeev Vax
myTableView.separatorStyle = UITableViewCellSeparatorStyleNone;

swift用

myTableView.separatorStyle = UITableViewCellSeparatorStyle.None

in cellForRowAtIndexPathメソッドは、iOS9以降で白い線を非表示にします。

0
Azik Abdullah

この問題は非常に厄介です。そして、これが私の解決策です:

override func didMoveToSuperview() {
    if self.superview != nil {
        self.tableView.separatorStyle = .None
    }
}

ビューがスーパービューに追加されたら、separatorStyleを再度設定します。

0
syshen