2016-07-29 9 views
0

Ich muss eine "alte" UIView-Stil erstellen, ohne AutoLayout und Einschränkungen. Aus meiner Sicht gibt es eine Tabellenansicht, die ihre Größe mit automatischem Layout und einer anderen Ansicht berechnet. Leider scheint es, dass die Ansicht selbst nicht die Höhe bietet, die ich brauche. Dies ist, wie ich die UIView erschaffe:Höhe von UIView ohne Auto-Layout erhöhen

// View 1 - Calendar View 

FSCalendar *calendar = [[FSCalendar alloc] initWithFrame:CGRectMake(0, 0, view.frame.size.width, height)]; 
calendar.dataSource = self; 
calendar.delegate = self; 

calendar.scopeGesture.enabled = YES; 

[view addSubview:calendar]; 

// View 2 - TableView 

_myTableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 200, SCREEN_WIDTH, SCREEN_HEIGHT) style:UITableViewStylePlain]; 
    self.myTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight| UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin; 
    self.myTableView.tableFooterView = [UIView new]; 
    self.myTableView.backgroundColor = self.view.backgroundColor; 
    [self.myTableView setShowsHorizontalScrollIndicator:NO]; 
    [self.myTableView setShowsVerticalScrollIndicator:NO]; 
    // self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; 
    self.myTableView.estimatedRowHeight = 85.0; 
    self.myTableView.rowHeight = UITableViewAutomaticDimension; 
    _myTableView.bounces = NO; 
    self.myTableView.dataSource = self; 
    self.myTableView.delegate = self; 
    self.myTableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag; 
    if (SYSTEM_VERSION_GREATER_THAN(@"8.4") && (IS_IPAD)){ 
     self.myTableView.cellLayoutMarginsFollowReadableWidth = NO; 
    } 

    [self.view addSubview:_myTableView]; 

Ich nehme Problem hier könnte sein:

_myTableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 200, SCREEN_WIDTH, SCREEN_HEIGHT) style:UITableViewStylePlain]; 

weil, ich bin etwa 200 Punkte Platz (y-Position fehlt, die ich will programmatisch bewegen die Tabellenansicht nach unten).

Gibt es eine Möglichkeit, die Bildschirmhöhe an meine Ansichten anzupassen?

+0

In welcher Methode schreiben Sie diesen Code? –

+0

@JayeshThanki in Sicht geladen –

+0

Ich habe nicht bekommen, warum Sie 200 als y Herkunft in "_myTableView = [[UITableView Alloc] initWithFrame: CGRectMake (0, 200, SCREEN_WIDTH, SCREEN_HEIGHT) Stil: UITableViewStylePlain]; "? entweder 200 zu 0 oder SCREEN_HEIGHT zu (SCREEN_HEIGHT-200). Hoffe das hilft. –

Antwort

1

Wenn sich diese Ansicht in einer anderen Ansicht befindet, sollte sie in der Größe layoutSubviews geändert werden.

- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 

    // your code here... 
} 

Wenn es innerhalb eines Viewcontroller ist der Ansicht, tun die Größenänderung in viewDidLayoutSubviews.

- (void)viewDidLayoutSubviews 
{ 
    [super viewDidLayoutSubviews]; 

    // your code here... 
} 
+1

danke, das wird tun. –

+0

sicherlich würden Sie dies mit Swift tun, Jungs – Fattie

+0

Macht nicht wirklich einen Unterschied: Autolayout kann verwendet oder in obj-c oder swift aviaged werden –