2017-03-16 1 views
0

Zunächst einmal habe ich dieses Layout Problem programmatisch zu lösen und nicht in Storyboard, weil ich meine Knöpfe über Codierung definiert habe nicht ziehen & über Storyboard fallen gelassen,Wie automatisch programmgesteuert in Standard UITableViewCell für benutzerdefinierte UIButton auf der rechten Seite.

ich universellen iOS-App programmiert habe, in dem ich habe ein paar TableView's. Ich muss einige benutzerdefinierte Tasten in jeder UITableViewCell rechten Seite hinzufügen, oder Sie können es sagen, ich muss Schaltflächen in trailing Rand der Zelle hinzufügen, funktioniert es ziemlich gut in Simulator iPhone7 Plus, aber was ist mit iPhone 5 oder 5s & anderen iOS-Geräte? hier ist, wie es in iphone7 Plus-& iphone 5s

enter image description here

welche Art von Mäßigung aussieht ich in meinem Programm (Code) in Bezug auf Layouts tun soll, ist hier meinen Code in UITableViewCell Methode zur Definition von 4 Tasten in cellForRowAtIndexPath Methode ist ,

//Favorite Button 

    UIButton *addtoFavsButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
     [addtoFavsButton setImage:[UIImage imageNamed:@"like"] forState:UIControlStateNormal]; 
    addtoFavsButton.frame = CGRectMake(370.0f, 0.0f, 50.0f, 45.0f); 
    [cell addSubview:addtoFavsButton]; 
    [addtoFavsButton addTarget:self 
         action:@selector(addtoFavs:) 
       forControlEvents:UIControlEventTouchUpInside]; 
    [cell.contentView addSubview:addtoFavsButton]; 
    [addtoFavsButton setTag:indexPath.row]; 

// WebView Button 

UIButton *webViewButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[webViewButton setImage:[UIImage imageNamed:@"web"] forState:UIControlStateNormal]; 
webViewButton.frame = CGRectMake(335.0f, 0.0f, 50.0f, 50.0f); 
[cell addSubview:webViewButton]; 
[webViewButton addTarget:self 
        action:@selector(webView:) 
     forControlEvents:UIControlEventTouchUpInside]; 
[cell.contentView addSubview:webViewButton]; 
[webViewButton setTag:indexPath.row]; 


// Twitter Share Button 

UIButton *twitterButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[twitterButton setImage:[UIImage imageNamed:@"twitter"] forState:UIControlStateNormal]; 
twitterButton.frame = CGRectMake(300.0f, 0.0f, 45.0f, 42.0f); 
[cell addSubview:twitterButton]; 
[twitterButton addTarget:self action:@selector(twitterShare:event:) forControlEvents:UIControlEventTouchUpInside]; 
[cell.contentView addSubview:twitterButton]; 
//[twitterButton setTag:indexPath.row]; 


// Facebook Share Button 

UIButton *facebookButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[facebookButton setImage:[UIImage imageNamed:@"facebook"] forState:UIControlStateNormal]; 
facebookButton.frame = CGRectMake(265.0f, 0.0f, 45.0f, 42.0f); 
[cell addSubview:facebookButton]; 
[facebookButton addTarget:self 
        action:@selector(facebookShare:event:) 
     forControlEvents:UIControlEventTouchUpInside]; 
[cell.contentView addSubview:facebookButton]; 

vorschlagen mich, wie diese Tasten programmieren automatischen Layout, so dass alle Tasten von der rechten Seite beginnend in jedem iOS-Gerät eingestellt werden soll.

+0

Ich denke, keine Notwendigkeit der automatischen Layout calcuate nur den Rahmen anpassen basierend auf Gerät Breite –

+0

Ich habe meine Antwort –

Antwort

1

wenn Sie nicht automatisches Layout verwenden dann meine Antwort folgen

schritt1

die ein Makro erstellen, um die Breite Gerät definieren

#define WidthCalculation self.view.frame.size.width 

step2

zunächst den Rahmen für Ihren addtoFavsButton eingestellt, wird automatisch die Bildschirmbreite

addtoFavsButton.frame = CGRectMake(WidthCalculation - 60, 0.0f, 50.0f, 45.0f); 

danach caluculate die anderen Tasten basierend auf addtoFavsButton

webViewButton.frame = CGRectMake(WidthCalculation - (addtoFavsButton.frame.origin.x + 50.0f +10), 0.0f, 50.0f, 50.0f); 
+0

Schritt 2, die erste Zeile gibt ein genaues Ergebnis, aber ich habe versucht, den Button etwas mehr nach rechts zu bewegen, also habe ich '(WidthCalculation - 60, 0.0f, 50.0f, 45.0f);' mit '(WidthCalculation - 45, 0.0f, 50.0 f, 45.0f); 'und es gibt genaues Ergebnis sowohl im iphone 7Plus als auch im iphone 5s, aber die zweite Linie gibt nicht bequemes Resultat gibt es Knopf in der links meisten Richtung dh sehr Anfangspunkt des' UITableViewCell'so versuchte ich mich zu ändern Werte wieder und wieder rückgängig machen, um einige komfortable Ergebnisse zu erzielen, wie auch immer es mit folgenden Werten funktioniert.** weiterlesen nächster Kommentar wegen zu niedriger Zeichen übrig ** –

+0

** Entschuldigung für über die Hälfte Kommentar ** '(addtoFavsButton.frame.origin.x - 200), 0.0f, 50.0f, 50.0f);' dieses Ding gibt Genau in der Nähe von meinem zweiten webViewButton, in iPhone 5s, als ich es in iPhone 7Plus versuchte es gab mir keine genaue Nähe Ort dh überspringt mehr Platz als das der erwarteten .... keine Ahnung.? –

+0

addtoFavsButton.frame.origin.x - (webViewButton.size.width + 10), wird es automatisch die Breite anpassen –

1

Sie setzen den Rahmen dieser Schaltflächen so, dass unabhängig von der Breite des Geräts die Schaltfläche sich in (x, y) Koordinaten befindet, die in der Rahmenvariablen definiert sind. Daher müssen Sie diesen Schaltflächen automatische Layoutbeschränkungen hinzufügen, um das gewünschte Design auf allen Geräten korrekt zu erhalten.

Erstellen Sie mithilfe von NSLayoutConstraint-Objekt die erforderlichen automatischen Layoutbeschränkungen, und fügen Sie sie den Schaltflächen hinzu. Siehe diesen Link:

http://www.tutorialspoint.com/ios/ios_auto_layouts.htm

+0

Vielen Dank für Ihre Antwort, aber es ist nicht auf den Punkt, aber hilfreich und viele Informationen zur erforderlichen Abfrage zur Verfügung gestellt .. Going to up-vote –

Verwandte Themen