堆栈视图—拥抱抗压优先Kullanımı

Merhaba ,Buyazıda的抗压性ve拥抱优先konusunu elealıyoruz。 Tümcihazlarda tekilgörünümüyaratmaksöylendiğikadar zor mu? Cevabıbirlikte inceledikten sonra siz verin。 哈迪(Hadi)Başlayalım。

堆栈视图Nedir?

自动布局可从StackView iOS 9到hayatımızagirdi。

在属性中查看以下内容:在属性中查看以下内容:

Yatay Veya dikey olarak hizalamayapmanızısağlar:

Axis durumunagöreaşağıdakişekillerdehizalamayapmanızısağlar;
Axis Vertical durumu图标:领导,培训,填充中心
轴水平durumu图标:顶部,底部,填充中心

Aşağıdakikurallarıbelirleyerek boyutdağılımınıyapmanızısağlar:

填充: Yeni bir UIStackViewoluşturulduğundavarsayılandağıtımtürüolarak belirlenir。 Benim测试,用户界面UITextField和UIImageViewkullandımvebunlarıyatay bir UIStackViewgörünümündegruplandırıyorum。
Kontrollerinizi,分布ı填充olarak ayarlanan bir UIStackViewiçerisineyerleştirdiğinizde,kontrollerintümünüdoğalboyutlarındatutacak vealanıdoldurmakiçinbunlardan biriniuzatacaktır。 内容共享优先(CHP)内容共享优先(CHP)内容共享优先。 UITextField’larıarasınasekiz birimboşlukekledim,她的birinin boyutunugörebilirsiniz。

TümkontrollerinizaynıCHP’ye sahip ise Xcode,düzeninbelirsizolduğunuşikayeteder。 Düzeltebilmekiçinstackviewiçerisindekiobjelerinboyutlarıbelliolmalıveyaekranınboyutunun yetersizkalmasıdurumundaönceliğinkimdeolduğubelirtilmelidir。

大约3个月前到一天,再到最后一天,再见到低矮的古德·杰兰·卡兰·卡兰·卡斯拉米。

Başkabirörnek,我的文本太长了,我的文本太高了,我的文本就太低了。

Sonuçolarak stackviewiçindekinesneler kendiözelliklerini(genişlik,yükseklik,拥抱veya压缩değerleri)baz alarak stackView’i tam olarak doldurmakzorundadırlar。

填充等于 :在她的控件中添加UIStackView。 Mümkünsekontrollerarasındakiboşluğuntamamıkullanılacaktır。 ButürleCHP’ninönemiyoktur,请她的控诉aynıboyuttadır。

按比例填充 :保留所有权利。🙂保留所有权利。tele tele。。。。。。。。。。。。 UIStackView,尺寸为“ınızbüyüyüpküçüldükçe”,尺寸为kontrollerin birbiriyleorantılıolarakaynıorandaboyutlanmasınısağlar。 Testimi UITextField’lar yerine UILabel kullanarakdeğiştirdim。

Dağılımın纵向风景肖像:

Gördüğünüzgibi,farklıdüzenboyutlarıiçinimageView velabel’larınoranlarıkorunur。

均等间距 :Budağıtımtürü,kontrollerin她的女友arasındaeşitaralıkbırakacakve kontroller kendisini yenidenboyutlandırmayacaktır。 布努(Bunu),埃塞克特勒(veike)和其他人(görüntüler)在一起。

平等居中 :儿子olarak,儿子dağıtımtürününbirörnekolmadangörmesibiraz zor。 Kontrollerin merkezlerinieşitolarakuzatacaktır。 布努·格斯泰梅克·伊辛(Bunugöstermekiçin),她的小男孩kontrolün女士kirrmızıdikeyçizgilerçizdim。 Kırmızıçizgilerarasındakimesafeeşitaralıklarlayerleştirilir。

Aralardakiboşluğubelirler:

Bir UIStackView可以查看更多信息。 Bazıları,child’larınbüyüklüğünükontrol etmehakkındagörüşbildirmişlerdir,diğerleriise,child’larınistedikleri kadarbüyükolmasınıvefarklışekillerdeuzamassııısağlamaya。

优先nedir吗?
优先权限制优先权。 界面生成器üzerindenherhangi bir约束tanımladığınızda默认olarak优先级1000设置edilir。 优先级1 ile 1000arasındadeğerleralmaktadır。 Deüerbüyüklüğünegöreöncelikartar。 货币1000约束zorunlu bir约束。 1或999个优先级değerinesahip约束’ler iseoptional’dır。 布局oluşturulurken,uygunkoşullaraltında,可选约束leriçerisindedoğrudenklem elde edilene kadar优先权yüksekten和düşüğekadar teker tekersağlamasıyapılarakdenenir。

您可以在下摆1000优先下摆到999优先购买Saaki kiuralolduğunuvarsayalım。 1000优先ile安全区’ya,999优先ile superview’ebağlıolsunuz。 安全区o o birsürümdeçalıştırıldığında1000优先’li kuralgerçekleştirilebildiğiiçin视图,安全区’yabağlıolarakaçılacaktır。 安全区域desteklenmeyen birsürümde(<iOS 11)安全视图1000优先'likuralıgerçekleştiremediğiiçinbir sonrakikuralınolupolmadığınıkontrol edecek。 999 priority'li kural superview'ebağlıolaraktanımlandığıiçinbunugerçekleştirerekview'i busürümiçinsuperview'ebağlayacaktır。

UILayoutPriority’nin 4 adet优先级seviyesişöyledir:

(250)
(500)
(750)
必填 (1000)

内在内容大小
Bazıview’lariçeriğinegörekendiliğindenbir boyuta sahiptir。 Bunuonların内在内容大小’ıolarakadlandırılıyor。 UIButton和UILabel Buna birörnektir。 İkisindedeiçerikolarak bulunan title’a ek olarak ufak marginler ileboyutlandırılmaktadır。 界面生成顶部标签顶部顶部水平约束tanımıyaparsanızbaşkahiçbir约束ihtiyaçduymayacaktır。

Yukarıdakiörnekte视图içersinde2 adet butonum var。 Soldansağdanzorunlu constraint’lertanımlanmışdurumda ve 2’siarasında8 point lik bir约束bulunuyor。 Ancakiçeriğinboyutunualdığındanburada bir冲突oluşuyor。

Buörnektebutonlarınsağında,solunda vearalarındabelli biruzaklıkolmak zorunda。

我在冲突中的冲突:
Butonlardan Birine sabit boyut verilebilir

Buradaki练习2。butona sabit birgenişlikverdik ve birinci butoniçeriğikendiliğindensıkıştıve约束ortadankalktı。

AralarındakiboşlukKüçükEşit(≤)olaraktanımlanabilir

Aradakiboşluğu8 pointeeşitveya dahaküçükolabileceğinisöylediğimizdegörseldekigibiiçerikboyutunagöregenişlikalan butonlariçigeegeçti。

Bunlara benzerçözümlerüretmekmümkünancak bu gibi durumlarda hangi contentin bizimiçindahaöncelikliolduğunakarar vermemizlazım。 Buyüzdenpriority yine devreye giriyor

Buradakarşımıza 含量 ve 含量耐压缩性优先级

  • 内容拥抱优先级: Sarılma
    Buöncelik约束lerarasında优先权sibüyükolanınküçükolanıniçeriğinegörebüyümesineizin vermiyor。 Yeterli olan boyutunasarılıyor。
  • 内容压缩抗性优先级: Sıkıştırma
    Buöncelikise约束器arasında优先权büyükolanınkendi uygun boyutunu korumakiçinküçükolanısıkıştırabilmesinisağlıyor。

您可以在Pekitümbunlarınbizimörneğimizile nealakasıvar吗?

Enbaşadönecekolursakşöylebir冲突alıyoruz。 Buradakihatanıntam sebebi 2内容抗压缩性(CCR)优先级在内容运行时具有hangisinin的内容。 Burada警报按钮2次内容拥抱优先(CHP)信息优先权(CHP)。

gibi按钮2的按钮2的按钮1 e的galanye kalan alandoğrultusunda的按钮。 Olayıdaha iyi anlamakadınabirde Button 2’nin字体大小’ını15 10 23’ealıpsonucu inceleyelim:

苏努克
Autolayoutişlemlerindeyapmamızgerekenbirçokişlemigördüğünüzgibi stackview hallediyor。 Gerekli yerlerdekullanıldığında,yuri bir obje eklenmesi durumunda zamankaybıoluşturandurumlardankaçınılmışolunur。

Bir sonrakiyazıdagörüşmeküzere🤚

侯赛因·巴加纳(HüseyinBagana)