Xcode 8'deki 'Özelliklere Göre Değişken' nedir?


86

AutoLayout ve Size sınıflarını kullanıyorum, ancak iOS 10 ve yeni Xcode 8.0 sürümüyle birlikte yeni bir seçenek var Vary for Traits. Bu, farklı genişlik ve yükseklikteki cihazlar için Boyut Classe'nin değiştirilmesidir.

görüntü açıklamasını buraya girin

widthOnay kutusunun seçilmesi ile görüntülenir varying 14 compact width devices.

görüntü açıklamasını buraya girin

heightOnay kutusunun seçilmesi ile görüntülenir varying 18 compact height devices.

görüntü açıklamasını buraya girin

Her iki onay kutusunun seçilmesi ile görüntülenir varying 11 compact width regular height devices.

görüntü açıklamasını buraya girin

Bu seçeneklerden nasıl yararlanılır? AutoLayout'u Xcode7.0 gibi boyut sınıflarıyla kullanabilir miyiz? Herhangi birinin derinlemesine bilgisi varsa, lütfen açıklayın.


WWDC 2016 oturum videolarına bir göz atın. Eminim bir yerlerde "Xcode'un yeni özellikleri" olarak ele alınmıştır.
Martin R

Yanıtlar:


134

Bu, iPad ve iPhone'lar için farklı düzenler eklemek için projenizde "Değişken Özellikleri" nasıl hızlı bir şekilde kullanacağınıza dair bir uzantıdır.

Beden sınıfları hakkında daha fazla bilgi edinmek için lütfen bunu okuyun.

https://developer.apple.com/reference/uikit/uitraitcollection

görüntü açıklamasını buraya girin

Aşağıdaki örneği atlıyorsanız, sondaki Özeti okuyun.


  • AMAÇ :

İPhone ve iPad'de farklı genişliklere sahip bir düğmeye ihtiyacınız var. İlki 80, ikincisi ise 300 genişliğe sahip.

  • YÖNTEM 1 :

Yüklendiği gibi Çoklu Kısıtlamalara Sahip Özellikler için Değişken.

  • ADIMLAR:

    1. Önce düğmeyi yatay ve dikey olarak ortala gibi ortak kısıtlamaları ekleyin.

görüntü açıklamasını buraya girin

  1. VaryForTraits'i seçin ve boyut sınıfı yönergelerine göre iPhone ekranları için, bir C * R boyut sınıfı modele uyar ve bu, PopUp'ta Genişlik ve Yükseklik onay işaretlerini kontrol ederiz. Ekranda herhangi bir yere tıklayarak açılır pencereyi kapatın.

görüntü açıklamasını buraya girin görüntü açıklamasını buraya girin

  1. Genişlik sabitini ekleyin ve kısıtlamanın C * R boyut sınıfı için eklenip eklenmediğini kontrol edin. Kısıtlamalar ekledikten sonra, Değişiklik Yapıldı düğmesini seçin.

görüntü açıklamasını buraya girin görüntü açıklamasını buraya girin

  1. İPad ekranları için, tekrar herhangi bir iPad cihazını seçin ve VaryForTraits'i seçin ve bu sefer yükseklik-genişliğe tıkladığınızda, R * R varyasyonunu göstermelidir.

görüntü açıklamasını buraya girin görüntü açıklamasını buraya girin

  1. Yine bir genişlik sınırlaması ekleyin, son eklenen iPhone genişlik sınırlaması ekran görüntüsünde olduğu gibi vurgulanmamış olmalıdır. Katma değer bu sefer beden sınıfı R * R için olacaktır.

görüntü açıklamasını buraya girin görüntü açıklamasını buraya girin

  1. İPhone düzenine geri dönün, genişlik olarak 80 alır ve iPad 300 alır.

görüntü açıklamasını buraya girin

SONUÇ:

Lütfen toplam iki kısıtlamanın eklendiğine ve her iki kısıtlamada da değerlerin seçilen beden sınıfına göre farklılık gösterdiğine dikkat edin.


  • YÖNTEM 2:

Tek Kısıtlamalı Özellikler için Değişken, Çoklu Boyut Sınıfı yüklü

  • ADIMLAR:
    1. Normal genişlik sınırlamasını ekleyin. Ardından bu kısıtlamayı seçin ve Sabit değerin yanındaki + düğmesini seçin.

görüntü açıklamasını buraya girin

  1. Özellik varyasyonunu ekleyin ve iPhone için C * R'yi seçip sabit değeri 100 olarak ayarlıyoruz.

görüntü açıklamasını buraya girin görüntü açıklamasını buraya girin

  1. Yine R * R olarak bir özellik varyasyonunu takip eden iPad için yine + butonuna tıklayarak bir varyasyon daha ekliyor ve değeri 300 olarak ayarlıyoruz.

görüntü açıklamasını buraya girin görüntü açıklamasını buraya girin

  1. Bir iPad seçin ve genişlik otomatik olarak 300 olarak alınacaktır ve iPhone'a geri döndüğünüzde değer olarak 100 alır.

görüntü açıklamasını buraya girin

SONUÇ:

Bu, yalnızca tek bir kısıtlama gerekli olduğunda ve sabit değer farklı olduğunda iki sınırlama eklemek yerine daha iyi bir seçenek gibi görünüyor.

NE ZAMAN KULLANILMALI, NE KULLANILIR:

Her iki yaklaşım da temelde aynı şeyi yapıyor ve Boyut sınıflarına değer veriyor.

Ancak, özellikle bir cihaz için bir sınırlama eklemek istediğinizde veya boyut sınıfı dediğinizde # Yöntem1 kullanılır. Örneğin, iPhone'da düğme İlk 50 noktadan olmalı ve iPad'de yatay ve dikey olarak ortalanmalıdır. Bu gibi durumlarda, belirli bir boyut sınıfı için kısıtlamalar eklemek üzere kapılar açarken VaryForTraits'i kullanmanız gerekir.

# Method2 , aynı kısıtlama türü için farklı sabit değerler istediğinizde kullanılır.

Not: ÇALIŞMA ÖRNEĞİNİ ALAMAYANLARA

Lütfen yalnızca gerekli kısıtlamaları Yüklendi olarak eklediğinizden emin olun. Yüklü'ye karşı onay kutusu, yalnızca bir boyut sınıfı için ihtiyacınız olan kısıtlama için görünmelidir. Anahtar bu!

görüntü açıklamasını buraya girin

Bir görünümde bir uiButton'a bir üst sınırlama ve bir satır aralığı eklemeniz yeterlidir. En üst sınırlamayı seçin ve Artı işaretiyle temel Yüklendi seçeneğinin işaretini kaldırın. Şimdi, Artı işaretine tıklayarak, C R'ye varyasyon ekleyin ve bu seçeneği işaretleyin. Şimdi, çeşitli yönelim kombinasyonlarıyla cihazı iPhone'dan iPad'e değiştirin. Bu kısıtlama yalnızca dikey yönde iPhone olan C R boyut sınıfı için uygulanacaktır . Temel Yüklendi (Artı simgesi olan) karşısındaki onay kutusu işaretlendiyse, bu, kısıtlamanın tüm boyut sınıflarına uygulanması gerektiği anlamına gelir.

ÖZET:

Özellik Değişimi, bir cihaz yapılandırmasına dayalı olarak kullanıcı arayüzünüzün sunumunda yapılan bir değişikliktir. Kullanıcı arayüzünün Özellik Varyasyonları sadece kısıtlamalarla sınırlı değildir, çok daha fazlasına da uygulanabilir. Cihaz karanlık bir stile ayarlandığında arka planın ve diğer öğelerin rengini değiştirmek gibi. Bir varyasyon, kullanıcı arayüzünün bir öğesine, örneğin bir kısıtlamanın kaldırılmasına veya bir etiket için yazı tipi gibi bir görünüm sınıfı veya kısıtlamanın bir özelliğine uygulanabilir. Değişebilirsin:

  • Bir görünümün boyutu veya konumu

  • Bir görünümün kurulumu

  • Bir kısıtlamanın yüklenmesi

  • Kısıtlama sabiti

  • Yazı tipi

  • Yazı tipi, renk tonu veya arka plan rengi

  • Düzen kenar boşlukları

  • Görüntü dosyası

Değiştirebileceğiniz belirli özellikler kümesi, öğenin sınıfına bağlıdır. Örnekte, Kısıtlama Kurulumu & - Kısıtlama sabitinin kullanımını gösterdik. Diğerleri oldukça basittir ve kolayca çıkarılabilir.


51
Bu benim için çalışmıyor .. Tüm ekran boyutlarında kısıtlamaları günceller ve pratik bir şey olur ...
Dan

5
Çalışmazsa , şunu okumayı deneyin: help.apple.com/xcode/mac/8.0/#/devba3dd0b51 . Yazı tipini veya başka bir özelliği özelleştirmek istiyorsanız, öznitelikler bölmesindeki özelliğin solunda bulunan "+" işaretini tıklayın. Ayrıca iPhone 4s ve iPhone 7 Plus özelliklerini genişliğe bağlı olarak değiştiremezsiniz, örneğin her ikisi de kompakt genişliktedir. Bunları iPhone ve iPad için çeşitlendirebilirsiniz.
Denis Kutlubaev

2
Benim için çalıştı thnx :)
Sanman

1
Eski kısıtlamayı sildikten ve değerini değiştirmek yerine yenisini ekledikten sonra benim için çalıştı.
Teodor Ciuraru

2
Bunun işe yaramadığını söyleyenler için. Tüm kısıtlamayı değiştirmeye çalıştığınızı düşünüyorum, sadece bir kısıtlamadaki sabit değeri, aslında kısıtlamanın çoklu veya diğer özelliklerini değiştiremezsiniz. Bu kısımda da kafam karıştı.
3366784

21

Özelliklere göre değişiklik, Xcode'un önceki sürümünde mevcut olan boyut sınıflarının evrimi seçeneğidir. Özelliklere göre çok daha şık ve hassas bir varyasyona izin verir. Tabii ki, sadece iPad / iPhone varyasyonları ile sınırlı değil, aynı zamanda yöne ve farklı cihaza göre varyasyonları da belirtebilirsiniz.

Bu konudaki diğer cevaplarda bazı eksiklikler ve yanlışlıklar var, belki de bir cevap vermenin en etkili yolu bir örnek vermektir. Açıklık adına, örneğimizi yalnızca bir düğme ve iki düzen ile sınırlayacağız. Ancak aşağıda açıklandığı gibi aşağıdaki örneği dilediğiniz gibi uzatabilirsiniz. Amacımız, iki farklı düzen arasında bir düğmenin konumunu ayarlamaktır: tüm cihazlarda yatay ve dikey.

Not: "niteliklere göre çeşit" seçeneği etkinleştirilmezse, tüm düzen ve kullanıcı arabirimi ayarlamaları tüm özelliklere (yani tüm boyut sınıflarına) atıfta bulunur.

fig1

Film şeridimize bir düğme koyarak başlayalım. "Özelliklere göre değişir" etkinleştirilmediğinden, düğme tüm farklı düzenlerde mevcut olacaktır. Bunun yerine, özellikler için değişiklik özelliğini etkinleştirmiş olsaydık, düğme yalnızca seçilen belirli özelliğe yönlendirilecekti.

incir. 2

Şimdi, "özellik için değişiklik" özelliğini etkinleştirelim ve yüksekliğe dayalı bir varyasyon seçelim. Alt ekranın maviye döneceğini ve seçime göre tüm cihazın etkilendiğini göreceksiniz. Çok uzak çok iyi.

Şek. 3

Düğmeyi tekrar seçin ve her zamanki kısıtlamaları ekleyin. Örneğimizde, genişlik ve yüksekliğin yanı sıra üst ve sol satır aralığı ekleyeceğiz. Bundan sonra, "Değişen Bitti" ye tıklayın. Ekranın alt kısmının tekrar griye döneceğini göreceksiniz. Olan şu ki, Interface Builder'a yukarıdaki kısıtlamaları sadece (w: C h: R) sınıfları için eklemesini söylemiştik.

fig4

Şimdi ekranın altındaki manzara modunu seçin. Sadece bazı özellikler için eklediğiniz kısıtlamalara sahip olmadığı için Düğmenin kırmızı olduğunu göreceksiniz. Özellikler için yeniden değişiklik seçin ve yükseklik değişimini tekrar seçin. Aşağıdaki kısıtlamaları ekleyin:

fig5

ve değişik yapılan basın. Artık düğme, hem yatay hem de dikey olarak ekranda iyi tanımlanmıştır.

fig6

Oluşturun ve çalıştırın. Ekranın yönüne göre butonun değişeceğini göreceksiniz.

Bu kalıbı izleyerek daha gelişmiş düzenler oluşturabilirsiniz. Örneğin, başlangıçta özellikler için bir çeşit seçebilir ve UIKit nesnelerini yalnızca belirli bir özellik için bırakabilirsiniz. Bu nesne yalnızca belirtilen varyantta mevcut olacak ve diğerlerinde gri renkte görünecek ve özelliklerine göre tamamen farklı kullanıcı arayüzleri oluşturmanıza izin verecektir.


3
(WC, hR) sınıfı için kısıtlamalar ekledim ve sonra değişiklik yapıldığına tıkladım. (WR, hR) açtığımda eski kısıtlamaları da görüyorum. Bu sınıf için (wR, hR) yeni kısıtlamalar nasıl oluşturulur. Lütfen söyle bana @valvolin
Ramcharan Reddy

9

Kendisinden başka bir şey değil size classes, farklı temsillerle. kadar xcode 7biz büyüklük sınıfları kullanılır, değerlendirmemiz height-widthiçinde regular,compact and anyde, bir şekilde vary for traitskavram aynıdır ancak xcode açıklamak özellikle exact device. Eski sürümde for every iphone in portraint, bunun içinde tam cihazı bildiğimiz vb. Bilgileri biliyoruz!

Aşağıdaki ekran görüntülerini kontrol edin,

görüntü açıklamasını buraya girin

görüntü açıklamasını buraya girin

Daha fazla bilgi için wwdc2016 - videoya bakmalısınız !

Referans: This So Post


Tamam, WWDC Video'yu kontrol edeyim.
technerd

Haklısın, boyut sınıflarının evriminden başka bir şey değil
Durai Amuthan.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.