0

Dies ist, was meiner Ansicht nach wie folgt aussieht:UITableView gruppiert Satz Hintergrundfarbe transparent

enter image description here

Und das ist, wie ich es (ohne Berücksichtigung der Textfarbe)

enter image description here

sein wollen Wie Sie sehen können, sollte die Ansicht zwischen den Überschriften gelöscht werden. Aber das passiert nicht.
Dies ist, wie ich die modal Viewcontroller bin der Umsetzung:

ActivityFilterViewController *filter = [[ActivityFilterViewController alloc] init]; 
    filter.view.backgroundColor = [UIColor clearColor]; 
    [filter setModalPresentationStyle:UIModalPresentationCurrentContext]; 
    [self presentViewController:filter animated:YES completion:nil]; 

ActivityFilterViewController:

Ich habe die UITableView als gruppiert gesetzt und stellen Sie die Höhe der Kopf- und Fußzeile der Abschnitte als 10. Und auch gelöscht die Hintergrundfarbe der Header-Ansichten.

+0

sind Sie versuchen, die Hintergrundfarbe von Tableview zu entfernen oder sonst bro –

+0

Sie können Siehe: https://github.com/nicklockwood/FXBlurView –

+0

@ Anbu.Karthik: Ich setze das auch als clearColor – Nitish

Antwort

0

Wenn ios version is lower then 8.0 dann sollten Sie modalen Präsentationsstil auf UIModalPresentationCurrentContext bis self setzen. so etwas wie,

self.modalPresentationStyle = UIModalPresentationCurrentContext; 

Wenn Sie dann mit den Navigationscontroller,

self.nnavigationController.modalPresentationStyle = UIModalPresentationCurrentContext; 

Wenn zwei navihation Controller diese Ansicht dann zu erreichen,

self.navigationController.navigationController.modalPresentationStyle = UIModalPresentationCurrentContext; 

Wenn ios Version ist greater or equal to 8.0 dann modal Präsentation Stil sollte UIModalPresentationOverCurrentContext sein und sollte auf View-Controller, die Sie möchten, wie,

filter.modalPresentationStyle = UIModalPresentationOverCurrentContext; 

Wenn Sie diese Einstellung vorgenommen haben, überprüfen Sie, ob die Hintergrundfarbe für jede Ebene auf clear color des Filters VC gesetzt ist.

Sie sollten die Ansichtshierarchie debuggen, um zu überprüfen, wie viele Layer dazwischen liegen.

Hope this helfen :)

0

Verwenden Sie eine benutzerdefinierte Ansicht Controller. Kein ActivityController. Entwerfen Sie es wie Sie möchten und präsentieren Sie es im aktuellen Kontext.

Keine Notwendigkeit für ein UITableView, da Sie es sowieso nicht scrollen.

Verwenden Sie nur gerundete Ecken für beide Unteransichten.

Wenn Sie eine Schaltfläche zur Laufzeit ausblenden können Sie UIStackView verwenden, damit das Layout automatisch geändert wird.

0

Sie können eine Unteransicht mit einer UITableView zu einer UIAlertController hinzufügen.

Erstellen Sie den UIAlertController.

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil 
                    message:nil 
                  preferredStyle:UIAlertControllerStyleActionSheet]; 

Erstellen Sie die Subview mit dem UITableView

UIVisualEffect *blurEffect; 
    blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]; 

    UIVisualEffectView *detailsView; 
    //Let's match the cornerRadius the iOS Style 
    if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"9.0")) { 
     detailsView = [[UIVisualEffectView alloc] initWithFrame:CGRectMake(0, -120, alertController.view.frame.size.width-20, 110)]; 
     detailsView.layer.cornerRadius = 15; 
    } else { 
     detailsView = [[UIVisualEffectView alloc] initWithFrame:CGRectMake(0, -120, alertController.view.frame.size.width-16, 110)]; 
     detailsView.layer.cornerRadius = 5; 
    } 

    detailsView.effect = blurEffect; 
    detailsView.layer.masksToBounds = YES; 
    detailsView.alpha = 1; 
    detailsView.backgroundColor = [[UIColor whiteColor] colorWithAlphaComponent:0.74]; 

    //Add the UITableView 
    UITableView *menuTableView = [[UITableView alloc]initWithFrame:detailsView.frame style:UITableViewStylePlain]; 
    [detailsView addSubview:menuTableView]; 

Fügen Sie die Aktionen & Subview und präsentieren die UIAlertController

UIAlertAction* resetAction = [UIAlertAction actionWithTitle:@"Reset to default" 
                  style:UIAlertActionStyleDefault 
                 handler:^(UIAlertAction * action){ 

    //Reset the switches in your UITableViewCells 

    }]; 


    UIAlertAction* saveAction = [UIAlertAction actionWithTitle:@"Save" 
                  style:UIAlertActionStyleCancel 
                 handler:^(UIAlertAction * action){ 

    //Save 

    }]; 

    [alertController addAction:resetAction]; 
    [alertController addAction:saveAction]; 

    // Add the Subview with the UITableView 
    [alertController.view addSubview:detailsView]; 

    [self presentViewController:alertController animated:YES completion:nil]; 
0

Schritte 1 & 2 unten schon gewesen sagte von anderen, bu Ich werde es hier trotzdem für die Vollständigkeit meiner Antwort sagen.

Schritt 1, stellen Sie die Tabellenansicht Hintergrund transparent:

self.tableView.backgroundColor = [UIColor clearColor]; 

Schritt 2, wie Sie sagten Sie bereits haben, können Sie die Höhe durch Überschreiben der heightForHeaderInSection Methode (in Ihrem Fall setzen müssen liefern

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
{ 
    return 50.0; 
} 

Schritt 3, eine benutzerdefinierte Ansicht durch das Überschreiben: 10)Verfahren (note - das ist, wo Sie die Hintergrundfarbe muss klar):

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
{ 
    UIView * header = [[UIView alloc] initWithFrame:CGRectMake(0,0,self.oTableView.frame.size.width, 10)]; 
    header.backgroundColor = [UIColor clearColor]; 

    return header; 
} 

Schritt 4, wenn Sie überprüfen, dass dies in der Tat, einen transparenten Hintergrund zeigt (Sie‘ Sehen Sie die Ansicht darunter im Hintergrund, wie Sie oben und an den Seiten der Tabellenansicht sehen. Konzentrieren Sie sich dann darauf, den gewünschten Effekt am oberen und unteren Rand der Zellen zu erzeugen.

Sie können dies auf zwei Arten in einer tun:

  1. ändern Sie bitte Ihre UITableViewCell Implementierung abgerundete Ecken zu erstellen (nur oben links und oben rechts, wenn die erste Zelle in einem Abschnitt, nur unten links und unten rechts, wenn die letzte Zelle in einem Abschnitt).
  2. Passen Sie die benutzerdefinierte Ansicht in der viewForHeaderInSection Überschreibung an, um abgerundete Eckeneffekte bereitzustellen (fügen Sie Subviews zur header Ansicht hinzu, die Sie mit dieser Methode zurückgeben). Dadurch wird jedoch mehr Platz oben (erste Zelle) oder oben hinzugefügt & Boden (letzte Zelle) von Zellen in einem Abschnitt.
0

Versuchen Sie folgendes:

viewDidLoad:

tableView.backgroundColor = [UIColor clearColor]; 

oder die oben nicht funktioniert,

tableView.backgroundView = nil; 
Verwandte Themen