Hallo,
wie dem Titel schon zu entnehmen ist habe ich aktuell das Problem das eine meiner Views nicht auf allen Gerätegrößen gleich aussieht. Das hat schätze ich mehrere Gründe als lediglich die Constraints aber ich komme einfach erstmal zum groben Aufbau meiner View, damit ihr euch ungefähr vorstellen könnt wie das ganze ausschaut.
Da die View in einem Navigation Controller eingebunden ist habe ich ganz oben eine Nav Bar.
Direkt unter dieser befindet sich eine ImageView mit den maßen 49 x 49 in dem sich ein Profilbild befinden soll. Ungefähr 8 Pixel darunter befindet sich eine ScrollView mit den maßen 375 x 375.
Da ich das ganze standardmäßig auf die Größe des iPhone 8 anpasse habe ich jetzt ein Problem wenn ich den Simulator auf iPhone X oder iPhone 8 Plus stelle. Im wesentlichen habe ich auch nur ein Problem mit der ScrollView da sich diese je nach Gerät anders verhält. Den Rest kriege ich gehändelt.
Bei der ScrollView gibt es zudem eine Besonderheit da ich in dieser die Bilder auslese die ein User hochgeladen hat. Aus dem Grund habe ich auch zum Teil Code dazu geschrieben in dem die maße der ScrollView eine entscheidende Rolle spielen. Diese Code schaut so aus:
Alles anzeigen
Wie ihr seht gebe ich die maße der ScrollView auch in dem Code so ein. Ich habe also bspw. beim iPhone 8 Plus das Problem das die Bilder in der ScrollView zu kurz raten was die Breite angeht da die 375px eben nur auf die maße eine normalen iPhone 8 passe. Beim iPhone X passt alles von der Breite her, nur bei der Höhe scheint es so als wenn das Bild in der ScrollView von irgendwas nach unten gezogen wird weswegen ich einen Teil der unteren Hälfte des Bildes nicht sehe und dabei entsteht auch zwischen Bild und Profilbild ein dickerer weißer Balken der aber wohl zur ScrollView gehört da dieser auf Berührung reagiert (ist wohl einfach nicht mit dem Bild gefüllt an der Stelle).
Jetzt ist die Frage was ich da machen kann. Ich habe bereits alle Constraints auf dieser View entfernt um nochmal schön von null anzufangen. Wie gesagt habe ich am meisten Problem mit der ScrollView. Was kann ich also machen um das Problem mit der Breite und Höhe auf allen Geräten in den Griff zu bekommen und wie fern muss ich den Code dazu anpassen ?
Ich habe im Netzt schon ein wenig geschaut ob es eventuell möglich wäre Größenangaben in Prozent anzugeben habe dabei nur etwa mit einem Multiplikator gefunden. Wollte jedoch erstmal hier nachfragen ob vielleicht jemand ein paar Tipps hat ?:D
wie dem Titel schon zu entnehmen ist habe ich aktuell das Problem das eine meiner Views nicht auf allen Gerätegrößen gleich aussieht. Das hat schätze ich mehrere Gründe als lediglich die Constraints aber ich komme einfach erstmal zum groben Aufbau meiner View, damit ihr euch ungefähr vorstellen könnt wie das ganze ausschaut.
Da die View in einem Navigation Controller eingebunden ist habe ich ganz oben eine Nav Bar.
Direkt unter dieser befindet sich eine ImageView mit den maßen 49 x 49 in dem sich ein Profilbild befinden soll. Ungefähr 8 Pixel darunter befindet sich eine ScrollView mit den maßen 375 x 375.
Da ich das ganze standardmäßig auf die Größe des iPhone 8 anpasse habe ich jetzt ein Problem wenn ich den Simulator auf iPhone X oder iPhone 8 Plus stelle. Im wesentlichen habe ich auch nur ein Problem mit der ScrollView da sich diese je nach Gerät anders verhält. Den Rest kriege ich gehändelt.
Bei der ScrollView gibt es zudem eine Besonderheit da ich in dieser die Bilder auslese die ein User hochgeladen hat. Aus dem Grund habe ich auch zum Teil Code dazu geschrieben in dem die maße der ScrollView eine entscheidende Rolle spielen. Diese Code schaut so aus:
Quellcode
- for picture in questionToPicture {
- for picture1 in picture where picture1.key == questionLabelText {
- VotePageControl.numberOfPages = picture1.value.count
- for (index,picture2) in picture1.value.enumerated() {
- let imageToDisplay: URL? = URL(string: allQuestionPictureURL + picture2)
- let questionImageView: UIImageView = UIImageView(image:nil)
- if let imageUrl = imageToDisplay {
- questionImageView.sd_setImage(with: imageUrl)
- }
- questionImageView.contentMode = .scaleAspectFit
- let xCoordinate = CGFloat(index) * self.view.bounds.size.width
- contentWidth += view.frame.width
- VotingScrollView.addSubview(questionImageView)
- questionImageView.frame = CGRect(x: xCoordinate, y: (view.frame.height / 2) - 335, width: 375, height: 375)
- }
- }
- }
- VotingScrollView.contentSize = CGSize(width: contentWidth, height: 375)
Jetzt ist die Frage was ich da machen kann. Ich habe bereits alle Constraints auf dieser View entfernt um nochmal schön von null anzufangen. Wie gesagt habe ich am meisten Problem mit der ScrollView. Was kann ich also machen um das Problem mit der Breite und Höhe auf allen Geräten in den Griff zu bekommen und wie fern muss ich den Code dazu anpassen ?
Ich habe im Netzt schon ein wenig geschaut ob es eventuell möglich wäre Größenangaben in Prozent anzugeben habe dabei nur etwa mit einem Multiplikator gefunden. Wollte jedoch erstmal hier nachfragen ob vielleicht jemand ein paar Tipps hat ?:D