προσαρμογή συμπεριφοράς εμφάνισης με χρήση των περιορισμών autolayout στο xcode 6
<p>θέλω να χρησιμοποιήσω το autolayout για το μέγεθος και τη διάταξη μιας προβολής με τρόπο που θυμίζει τη λειτουργία περιεχομένου uiimageview.</p><p>έχω υποκλέψει μέσα σε μια προβολή κοντέινερ στο interface builder. το subview έχει κάποια εγγενή αναλογία που θέλω να σεβαστώ. το μέγεθος της προβολής του κοντέινερ είναι άγνωστο μέχρι την εκτέλεση.</p><p>εάν ο λόγος πλευρών της προβολής δοχείου είναι ευρύτερος από το υποκείμενο, τότε θέλω το ύψος του υποσέλιδου να ισούται με το ύψος της γονικής προβολής.</p><p>αν ο λόγος πλευρών της προβολής δοχείου είναι ψηλότερος από το υποκείμενο, τότε θέλω το πλάτος του υποσέλιδου να ισούται με το πλάτος της γονικής προβολής.</p><p>σε κάθε περίπτωση, εύχομαι η υποενότητα να είναι κεντραρισμένη οριζόντια και κάθετα μέσα στην προβολή του δοχείου.</p><p>υπάρχει τρόπος να επιτευχθεί αυτό χρησιμοποιώντας τους περιορισμούς autolayout στο xcode 6 ή σε προηγούμενη έκδοση; χρησιμοποιώντας ιδανικά το interface builder, αλλά αν όχι ίσως είναι δυνατόν να οριστούν αυτοί οι περιορισμοί προγραμματικά.</p>
<p>δεν περιγράφετε κλίμακα για να ταιριάζει. περιγράφεις την εμφάνιση. (έχω επεξεργαστεί την ερώτησή σας σε αυτό το θέμα.) η υποβολή γίνεται όσο το δυνατόν μεγαλύτερη, διατηρώντας παράλληλα την αναλογία της και προσαρμόζοντας εξ ολοκλήρου μέσα στον γονέα της.</p><p>τέλος πάντων, μπορείτε να το κάνετε αυτό με αυτόματη διάταξη. μπορείτε να το κάνετε εξ ολοκλήρου στο ib από xcode 5.1. ας ξεκινήσουμε με μερικές προβολές:</p><p><img src="https://i.stack.imgur.com/hhdxr.png" alt="some views"></p><p>η ανοιχτή πράσινη όψη έχει αναλογία διαστάσεων 4: 1. η σκούρα πράσινη προβολή έχει αναλογία διαστάσεων 1: 4. πρόκειται να δημιουργήσω περιορισμούς έτσι ώστε η μπλε όψη να γεμίζει το πάνω μισό της οθόνης, η ροζ όψη να γεμίζει το κάτω μισό της οθόνης και κάθε πράσινη προβολή να επεκτείνεται όσο το δυνατόν περισσότερο, διατηρώντας παράλληλα τον λόγο διαστάσεων και προσαρμόζοντας την δοχείο.</p><p>κατ 'αρχάς, θα δημιουργήσω περιορισμούς και στις τέσσερις πλευρές της μπλε όψης. θα το περάσω στον κοντινότερο γείτονα σε κάθε άκρη, με απόσταση 0. φροντίζω να απενεργοποιήσω τα περιθώρια:</p><p><img src="https://i.stack.imgur.com/yo2jf.gif" alt="blue constraints"></p><p>σημειώστε ότι το i <strong> δεν ενημερώνει </strong> το πλαίσιο ακόμα. θεωρώ ότι είναι ευκολότερο να αφήνετε χώρο μεταξύ των απόψεων κατά τη δημιουργία περιορισμών και απλά να ορίσετε τις σταθερές στο 0 (ή οτιδήποτε άλλο) με το χέρι.</p><p>στη συνέχεια, κλίνω το αριστερό, το κάτω και το δεξί άκρο της ροζ εικόνας στον πλησιέστερο γείτονά της. δεν χρειάζεται να ρυθμίσω έναν ανώτατο περιορισμό edge επειδή η άνω άκρη του είναι ήδη περιορισμένη στο κάτω άκρο της μπλε όψης.</p><p><img src="https://i.stack.imgur.com/spins.gif" alt="pink constraints"></p><p>χρειάζομαι επίσης έναν περιορισμό ισοδύναμων μεταξύ των ροζ και μπλε απόψεων. αυτό θα τους κάνει να γεμίσουν το ήμισυ της οθόνης:</p><p><img src="https://i.stack.imgur.com/oelrv.gif" alt="enter image description here"></p><p>αν λέω στο xcode να ενημερώσει όλα τα πλαίσια τώρα, έχω αυτό:</p><p><img src="https://i.stack.imgur.com/9fbwl.png" alt="containers laid out"></p><p>έτσι, οι περιορισμοί που έχω δημιουργήσει μέχρι τώρα είναι σωστοί. ανεξάρτητα από αυτό και να αρχίσετε να εργάζεστε με την ανοιχτό πράσινη όψη.</p><p>η τοποθέτηση σε πτυχές της ανοιχτής πράσινης προβολής απαιτεί πέντε περιορισμούς:</p><ul> <li>απαιτούμενος λόγος αναλογίας διαστάσεων προτεραιότητας στην ανοιχτό πράσινη όψη. μπορείτε να δημιουργήσετε αυτόν τον περιορισμό σε xib ή storyboard με xcode 5.1 ή νεότερη έκδοση.</li> <li>ο περιορισμός της απαιτούμενης προτεραιότητας που περιορίζει το πλάτος της ανοιχτό πράσινης όψης να είναι μικρότερο ή ίσο με το πλάτος του δοχείου.</li> <li>ένας περιορισμός υψηλής προτεραιότητας που καθορίζει το πλάτος της ανοιχτής πράσινης όψης να είναι ίσο με το πλάτος του δοχείου.</li> <li>ο περιορισμός της απαιτούμενης προτεραιότητας που περιορίζει το ύψος της ανοιχτής πράσινης όψης να είναι μικρότερο ή ίσο με το ύψος του δοχείου.</li> <li>ένας περιορισμός υψηλής προτεραιότητας που θέτει το ύψος της ανοιχτής πράσινης όψης να είναι ίσο με το ύψος του δοχείου.</li> </ul><p>ας εξετάσουμε τους δύο περιορισμούς πλάτους. ο περιορισμός που δεν είναι ο ίδιος, είναι επαρκής για να καθορίσει το πλάτος της ανοιχτής πράσινης όψης. πολλά πλάτη θα ταιριάζουν με τον περιορισμό. δεδομένου ότι υπάρχει ασάφεια, το autolayout θα προσπαθήσει να επιλέξει μια λύση που ελαχιστοποιεί το σφάλμα στον άλλο περιορισμό (υψηλής προτεραιότητας αλλά όχι υποχρεωτικό). η ελαχιστοποίηση του σφάλματος σημαίνει ότι το πλάτος είναι όσο το δυνατόν πλησιέστερο στο πλάτος του κιβωτίου, ενώ δεν παραβιάζεται ο απαιτούμενος περιορισμός που δεν είναι μικρός ή ίσος.</p><p>το ίδιο συμβαίνει και με τον περιορισμό του ύψους. και επειδή απαιτείται επίσης ο περιορισμός της αναλογίας πλευρών, μπορεί να μεγιστοποιηθεί το μέγεθος του υποβιβασμού κατά μήκος ενός άξονα (εκτός αν ο περιέκτης έχει την ίδια αναλογία διαστάσεων με την υποέκθεση).</p><p>έτσι πρώτα δημιουργώ τον περιορισμό της αναλογίας διαστάσεων:</p><p><img src="https://i.stack.imgur.com/4ihow.gif" alt="top aspect"></p><p>στη συνέχεια, δημιουργώ ίσους περιορισμούς πλάτους και ύψους με το δοχείο:</p><p><img src="https://i.stack.imgur.com/vycag.gif" alt="top equal size"></p><p>πρέπει να επεξεργαστώ αυτούς τους περιορισμούς ώστε να είναι λιγότερο από-ή-ίσους περιορισμούς:</p><p><img src="https://i.stack.imgur.com/bc7rh.gif" alt="top less than or equal size"></p><p>στη συνέχεια πρέπει να δημιουργήσω ένα άλλο σύνολο ίσων περιορισμών πλάτους και ύψους με το δοχείο:</p><p><img src="https://i.stack.imgur.com/u9hkm.gif" alt="top equal size again"></p><p>και πρέπει να θέσω τους νέους αυτούς περιορισμούς λιγότερο από την απαιτούμενη προτεραιότητα:</p><p><img src="https://i.stack.imgur.com/i7dte.gif" alt="top equal not required"></p><p>τελικά, ζητήσατε να είναι κεντραρισμένο το υποπεριοχή στο δοχείο του, οπότε θα ρυθμίσω αυτούς τους περιορισμούς:</p><p><img src="https://i.stack.imgur.com/4dtr1.gif" alt="top centered"></p><p>τώρα, για να δοκιμάσετε, θα επιλέξω τον ελεγκτή προβολής και θα ζητήσω από το xcode να ενημερώσει όλα τα πλαίσια. αυτό έχω:</p><p><img src="https://i.stack.imgur.com/kmtoy.png" alt="incorrect top layout"></p><p>ωχ! το subview έχει επεκταθεί για να γεμίσει πλήρως το δοχείο του. αν το επιλέξω, μπορώ να δω ότι στην πραγματικότητα διατηρείται η αναλογία του, αλλά κάνει μια πτυχή - <strong> συμπληρώστε </strong> αντί για μια πτυχή - <strong> ταιριάζει </strong>.</p><p>το πρόβλημα είναι ότι σε έναν λιγότερο από ή ίσο περιορισμό, έχει σημασία ποια είναι η άποψη σε κάθε άκρο του περιορισμού, και το xcode έχει δημιουργήσει τον περιορισμό απέναντι από την προσδοκία μου. θα μπορούσα να επιλέξω καθέναν από τους δύο περιορισμούς και να αντιστρέψω το πρώτο και δεύτερο στοιχείο. αντ 'αυτού, θα επιλέξω μόνο το subview και θα αλλάξω τους περιορισμούς ώστε να είναι μεγαλύτερο από-ή-ίσο:</p><p><img src="https://i.stack.imgur.com/mh4xm.gif" alt="fix top constraints"></p><p>το xcode ενημερώνει τη διάταξη:</p><p><img src="https://i.stack.imgur.com/srvqg.png" alt="correct top layout"></p><p>τώρα κάνω όλα τα ίδια πράγματα με τη σκούρα πράσινη θέα στο κάτω μέρος. πρέπει να σιγουρευτώ ότι η αναλογία πλευρών είναι 1: 4 (το xcode το μείωσε με περίεργο τρόπο αφού δεν είχε περιορισμούς). δεν θα δείξω τα βήματα ξανά, αφού είναι τα ίδια. εδώ είναι το αποτέλεσμα:</p><p><img src="https://i.stack.imgur.com/kdj1r.png" alt="correct top and bottom layout"></p><p>τώρα μπορώ να το εκτελέσω στον προσομοιωτή iphone 4s, ο οποίος έχει διαφορετικό μέγεθος οθόνης από τον ib που χρησιμοποιείται και δοκιμή περιστροφής:</p><p><img src="https://i.stack.imgur.com/hpa6w.gif" alt="iphone 4s test"></p><p>και μπορώ να δοκιμάσω στο iphone 6 προσομοιωτή:</p><p><img src="https://i.stack.imgur.com/otbq9.gif" alt="iphone 6 test"></p><p>έχω ανεβάσει τον τελικό πίνακα ιστορικού μου στο <a href="https://gist.github.com/mayoff/d9320088ab4025c95e40">αυτό το gist</a> για την ευκολία σας.</p>
Είσαι πιέζει ελεγκτή UIView σας σε μια ήδη υπάρχουσα UINavigationController (που έρχεται με το δικό του μπαρ πλοήγησης).


Τι πρέπει να κάνουμε είναι να απαλλαγούμε από τις απόψεις σας «επάνω γραμμή» και να έχουν πρόσβαση navigationItem ελεγκτής ρεύματος σας. Ρυθμίστε τις στενές / αποθηκεύσετε κουμπιά χρησιμοποιώντας leftBarButtonItem και rightBarButtonItem, δυνατή ακόμη και η titleView. για τον φορέα σχεδίασης, βιβλιοθήκες όπως [Raphael](http://raphaeljs.com/) παρέχει μια σταθερή API πάνω από SVG και VML.


για raster σχέδιο, μπορείτε να χρησιμοποιήσετε το <canvas> για browsers που υποστηρίζουν καμβά. 


για IE, θα προκαθορίσει divs ή να έχουν το σχέδιό σας χρήση του API Silverlight αν είναι διαθέσιμο. Να σημειωθεί ότι για την απόδοση, divs δεν θα πρέπει να 1εικ από 1px, αλλά μάλλον να είναι όσο διάστημα απαιτείται για το σχήμα που σχεδιάζετε. 20 1-pixel divs του ίδιου χρώματος θα πρέπει να είναι 1 div που είναι 20 pixels πλάτος. Σε γενικές γραμμές δεν θα πάρει πολύ διαδραστικό με την προσέγγιση div, επειδή το πρόγραμμα περιήγησης που στοχοθέτηση (IE) έχει αργή πρόσβαση DOM


**EDIT:** Η συνδεδεμένη βιβλιοθήκη κάνει η div-βελτιστοποιήσεις.


για HTML-μόνο λύσεις (δεν SVG / VML / καμβά) που [χρησιμοποιούν CSS και custom σύνορα πλάτη:](http://infimum.dk/HTML/slantinfo.html) Rex, υποψιάζομαι ένα καλό μέρος για να αρχίσετε να ψάχνετε είναι λύσεις που **συμπιέζουν το ViewState** - από όπου και αν αρπάζοντας ViewState στο διακομιστή προτού να σταλεί προς τα κάτω στον πελάτη και χρησιμοποιούντο το gzip αυτό. Αυτό είναι ακριβώς που θέλετε να είναι.


* [Scott Hanselman για ViewState συμπίεσης](http://www.hanselman.com/blog/CommentView,guid,febce059-7e7c-439e-af3d-c53d250b3e9c.aspx) (2005)
* [ViewState συμπίεσης με System.IO.Compression](http://www.bloggingdeveloper.com/post/How-To-Compress-ViewState-in-ASPNET-20-ViewState-Compression-with-SystemIOCompression.aspx) (2007) τελικά βρήκα κι εγώ τρόπο προσπαθώντας να το τρέξω σε 2ο xserver. λόγω λάθους στο script που έφτιαξα(export display=:1.0), ξεκίνησε κανονικά στον πρώτο σε ανάλυση 1440χ900 χωρίς όμως να αλλάξει την ανάλυση στο desktop.

έτσι τρέχοντας το παρακάτω script έχω το επιθυμητό αποτέλεσμα

export displa… Κατέληξα να κινείται στην ιεραρχία σε ένα τραπέζι συναρμολόγησης γιατί έπρεπε να αποθηκεύσει περισσότερο από γονέα / παιδιού σχέσεις. Κάνοντας έτσι, επίσης σήμαινε ότι θα μπορούσε χωματερή τον έλεγχο DynamicData και να χρησιμοποιήσετε ένα πιο χρήστη διαισθητική TreeView με την πλευρά του διακομιστή εκδηλώσεις drag-n-drop (ComponentArt). Λόγω της φύσης του ελέγχου, κανένα στοιχείο θα μπορούσε να είναι το δικό του γονέα, ώστε το πρόβλημα ήταν αμφισβητήσιμο. Πω πω, 7 μήνες είναι μεγάλο χρονικό διάστημα στην πρώτη μου εμπειρία με Οντότητα πλαίσιο :) μοιάζει με παράθυρο επιλογής αρχείου, που είναι μεγαλύτερο από τις διαστάσεις της οθόνης. υποθέτω πως αν το μικρύνεις σε τυπικές διαστάσεις θα δεις τι συμβαίνει. κρατώντας πατημένο το alt θα μπορείς να μεταφέρεις το παράθυρο να βρεις την κάτω γωνία του. Αν και δεν έχω χρησιμοποιήσει ένα αντικείμενο flash μέσα σε ένα έντυπο αίτησης παράθυρα εαυτό μου, ξέρω ότι είναι δυνατό. Στο Visual Studio στην εργαλειοθήκη σας, επιλέξτε να προσθέσετε ένα νέο στοιχείο. Στη συνέχεια, το νέο παράθυρο που εμφανίζεται επιλέξτε το **«COM Εξαρτήματα»** καρτέλα για να πάρετε μια λίστα στην οποία μπορείτε να βρείτε το **«Shockwave Flash Object»**


Μόλις προστεθεί στο εργαλειοθήκη, απλά χρησιμοποιήστε το στοιχείο ελέγχου όπως θα χρησιμοποιήσετε οποιοδήποτε άλλο «πρότυπο» ελέγχου από το Visual Studio.


τρεις απλές εντολές είναι διαθέσιμες για να αλληλεπιδρούν με τον έλεγχο:


* AxShockwaveFlash1.Stop ()
* AxShockwaveFlash1.Movie = FilePath & "\ FileName.swf"
* AxShockwaveFlash1.Play ()


το οποίο, νομίζω, είναι όλα αυτονόητα.



> 
> Θα ήταν μεγάλη για να είναι σε θέση να φορτώσετε το περιεχόμενο flash από ένα ρεύμα του είδους και όχι ένα αρχείο στο δίσκο.
> 
> 
> 


Μόλις είδα είστε, επίσης, ψάχνει για ένα μέσο για να φορτώσει το περιεχόμενο από ένα ρεύμα, και επειδή δεν είμαι σίγουρος ότι είναι δυνατόν με το αντικείμενο Shockwave Flash θα σας δώσω μια άλλη επιλογή (δύο στην πραγματικότητα).


η πρώτη είναι αυτή που θα σας συμβούλευα να χρησιμοποιήσετε μόνο όταν είναι απαραίτητο, δεδομένου ότι χρησιμοποιεί την πλήρη άνθηση **«συνιστώσα webbrowser»** (επίσης διαθέσιμο ως ένα επιπλέον στοιχείο εργαλειοθήκη), το οποίο είναι σαν να προσπαθεί να πυροβολήσει μια μύγα με μπαζούκα. Φυσικά αυτό θα λειτουργήσει, όπως ο έλεγχος θα λειτουργήσει ως [ένα παράθυρο πραγματικό του προγράμματος περιήγησης](http://visualbasic.about.com/library/courses/blecvbsbs2202.htm) (στην πραγματικότητα ο Internet Explorer πρόγραμμα περιήγησης), αλλά δεν είναι πραγματικά σημαίνει να χρησιμοποιηθούν με τον τρόπο που το χρειάζεστε.


η δεύτερη επιλογή είναι να χρησιμοποιήσετε κάτι που μόλις ανακάλυψα, ενώ ψάχνει για περισσότερες πληροφορίες σχετικά με την αναπαραγωγή του περιεχομένου flash μέσα σε μια φόρμα παράθυρα. [F-IN-BOX](http://www.f-in-box.com/dotnet/#feature_flv_playing) είναι μια εμπορική λύση που θα παίξει, επίσης, το περιεχόμενο από μια δεδομένη διεύθυνση της ιστοσελίδας. (Ο σύνδεσμος παρέχεται θα σας κατευθύνει στον κώδικα .NET θα πρέπει να χρησιμοποιήσετε). Το ίδιο πρόβλημα εδώ ..   

Απλά διακοσμήσετε τάξη μεσολάβησης σας με την ακόλουθη ιδιότητα


[System.ComponentModel.DesignerCategoryAttribute ( "κωδικός")]


για να απαλλαγούμε από τη λειτουργία άχρηστο σχεδιασμό. Θα ήθελα να μείνω μακριά από αυτό. Είναι ένα πολύ κακό παράδειγμα. Δεν καταλαβαίνω γιατί η Microsoft έθεσε στο διαδίκτυο. Πρώτα απ 'όλα για τους λόγους ασφαλείας, αλλά ο κώδικας είναι πολύ δύσκολο να διαβάσει για τους νέους σχεδιαστές. Χρησιμοποιώ asp.net MVC από την προεπισκόπηση 2, αλλά είναι ακόμα πολύ δύσκολο να διαβάσει αυτόν τον κωδικό, γιατί είναι κακό. Πολλές καλύτερα παραδείγματα που βρέθηκαν ή που χρησιμοποιούνται εδώ στοίβα υπερχείλιση. Προσωπικά προτείνω να παρακολουθείτε τα screencasts στην ιστοσελίδα Rob Connery ή για [Autumnofagile](http://www.autumnofagile.net)


[Karl Seguin πήρε το χρόνο για να συνοψίσουμε](http://codebetter.com/blogs/karlseguin/archive/2008/12/15/oxite-oh-dear-lord-why.aspx)


[Rob Κόνερι εργάζεται για τη Microsoft και δεν του αρέσει, είτε](http://blog.wekeroad.com/blog/some-thoughts-on-oxite/)


[Μια νέα λέξη είναι το όνομά του, αφού: Oxitis](http://frickinsweet.com/ryanlanciaux.com/post/Do-you-have-this-condition.aspx) το ολοκλήρωσα. χρησιμοποίησα την παρακάτω εντολή την οποία διάβασα στο manual της “xrandr” [εδώ](https://www.x.org/releases/x11r7.5/doc/man/man1/xrandr.1.html) :

xrandr --output edp-1 --scale 1.5x1.5το όνομα της οθόνης το βρήκα από τις “προτιμήσεις οθόνης”

[[στιγμιότυπο στο 2020-12-10 16-52-05]](https://linux-user.gr/uploads/default/original/2x/9/909a503497107f5be8dfafa010aab59bcfab6589.png "στιγμιότυπο στο 2020-12-10 16-52-05")

αυτή η ρύθμιση όμως χάνεται με την επανεκκίνηση, οπότε πρόσθεσα τη…