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 να κατανείμει σωστά τον χώρο μεταξύ των προβολών.