Sobes.tech
Middle+

Ποιος είναι ο σκοπός των ιδιοτήτων 'Προτεραιότητα αντοχής στην συμπίεση';

sobes.tech AI

Απάντηση από AI

Ορίζουν το βαθμό στον οποίο μια προβολή θα είναι απρόθυμη να μειωθεί σε σύγκριση με άλλες προβολές όταν ο διαθέσιμος χώρος είναι ανεπαρκής.

Ιδιότητες Προτεραιότητα Αντίστασης στη Συμπίεση:

  • Κάθε διάσταση (Οριζόντια, Κάθετη) έχει τη δική της προτεραιότητα.
  • Περιοχή τιμών: 1 (χαμηλότερο) έως 1000 (υψηλότερο, UILayoutPriorityRequired).
  • Μια προβολή με υψηλότερη προτεραιότητα θα αντισταθεί περισσότερο στη συμπίεση από μια με χαμηλότερη προτεραιότητα.
  • Η προτεραιότητα 1000 διασφαλίζει ότι η προβολή δεν θα συμπιεστεί κάτω από το εσωτερικό της μέγεθος περιεχομένου της σε καμία περίπτωση, αν είναι δυνατόν.

Χρήση:

  • Ετικέτα με δυναμικό κείμενο: Αν έχετε πολλές UILabel που μπορούν να εμφανίζουν κείμενα διαφορετικών μήκων, η χρήση προτεραιοτήτων βοηθά στον καθορισμό ποια θα συμπιεστεί πρώτη αν δεν χωράνε στην οθόνη.
  • Κουμπιά: Για να μην κοπεί το κείμενο σε ένα κουμπί, μπορείτε να ορίσετε υψηλή προτεραιότητα για το UILabel του χρησιμοποιώντας Προτεραιότητα Αντίστασης στη Συμπίεση.
  • Πολύπλοκα σχέδια: Σε πολύπλοκα σχέδια Auto Layout, οι προτεραιότητες χρησιμοποιούνται για την επίλυση αμφισημιών όταν υπάρχει έλλειψη χώρου.

Παράδειγμα: Δύο UILabel σε οριζόντια στοίβα.

let label1 = UILabel()
label1.text = "Κείμενο σύντομο"
label1.backgroundColor = .red

let label2 = UILabel()
label2.text = "Πάρα πολύ πολύ μακρύ κείμενο"
label2.backgroundColor = .blue

let stackView = UIStackView(arrangedSubviews: [label1, label2])
stackView.axis = .horizontal
stackView.distribution = .fill // Γεμίζει τον χώρο, αλλά μπορεί να συμπιέσει το περιεχόμενο

// Από προεπιλογή, οι προτεραιότητες είναι ίδιες (συνήθως 750).
// Και τα δύο labels θα συμπιεστούν αναλογικά.

// Ορίστε υψηλή προτεραιότητα για το label1
label1.setContentCompressionResistancePriority(.required, for: .horizontal) // 1000
// Το label2 διατηρεί την προεπιλεγμένη προτεραιότητά του (750)

// Τώρα, σε περίπτωση έλλειψης χώρου, το label2 θα συμπιεστεί περισσότερο,
// ώστε το label1 να διατηρήσει το μέγεθός του.

Σχέση με Προτεραιότητα Αγκαλιάσματος Περιεχομένου (Content Hugging Priority):

  • Content Hugging Priority: Ορίζει το βαθμό στον οποίο μια προβολή θα είναι απρόθυμη να αυξηθεί πέρα από το εσωτερικό της μέγεθος περιεχομένου της όταν υπάρχει επιπλέον διαθέσιμος χώρος.
  • Υψηλή Content Hugging Priority = η προβολή "αγκαλιάζει" το περιεχόμενό της και δεν επεκτείνεται.
  • Υψηλή Προτεραιότητα Αντίστασης στη Συμπίεση = η προβολή αντιστέκεται στη συμπίεση και δεν μειώνεται.

Αυτές οι δύο ιδιότητες συνεργάζονται για να βοηθήσουν το Auto Layout να κατανείμει σωστά τον χώρο μεταξύ των προβολών.