20

Bir dizi statik özel UITableViewCells oluşturuyorum ve UISegmentedControl'yi özel hücrelerden birine sürükledim.UISegmentedControl - Interface Builder'da yükseklik değiştirme

Bölünmüş kontrol, genişliğini değiştirmeme izin verirken, Arayüz Oluşturucu'daki yüksekliğini değiştiremiyorum (bu özellik, özellik denetçisinin 'boyut' bölümünde 44 üzerinde gri renktedir).

Bir UISegmentedControl'in kodda özel bir yükseklikle kopyalanabileceğini ve bir UITableViewCell'e eklendiğini biliyorum. Interface Builder'da bölümlenmiş kontrolün yüksekliğini ayarlamak için herhangi bir yol var mı?

cevap

2

ben IB emin değilim, ama her zaman kodunuzda hücreyi bulup programlı onun UISegmentedControl yüksekliğini ayarlamak olabilir.

39

Ayrıca Dashcode veya MacVim veya Edit gibi, herhangi bir metin düzenleyici xib dosyayı açabilirsiniz - bu bir XML var. Eğer IB değişiklikleri göreceksiniz -

<object class="IBUISegmentedControl" id="270020637"> 
    [...] 
    <string key="NSFrame">{{20, 154}, {176, 44}}</string> 
    [...] 
</object> 

Sonra ne istersen yükseklik içine 44 değiştirebilirsiniz: O zaman senin eleman bulmak, benim durumumda o benziyordu.

Bu IB yüksekliği değiştirilemez tüm öğeler için çalışır

- Ayrıca UIPicker ...

+5

Çok güzel.Şimdi ilk etapta IB'de değiştirmemize izin vermediği için elmayı suçlayın –

+0

Müthiş cevap! Apple başarısız! –

+0

#highqualityanswer Xcode 5.1'de benim için çalışan tek çözüm buydu. Teşekkürler! – GangstaGraham

1

Ben Kenderin cevaba eklemek istiyorum. Bunun yerine XIB'nin daha film şeridi kullanırsanız

, eklemek gerekir:

       <constraint firstAttribute="height" constant="10" id="9Wo-6S-8EM"/> 
           <constraint firstAttribute="width" constant="201" id="lw7-cq-3XN"/> 

id şey sanırım benzersiz olabilir. Belki bir kimlik seç ve bir harf değiştir

Bu tam kodu

<segmentedControl opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="RMR-XS-abw" userLabel="ngentot2"> 
         <constraints> 
          <constraint firstAttribute="height" constant="10" id="9Wo-6S-8EM"/> 
          <constraint firstAttribute="width" constant="201" id="lw7-cq-3XN"/> 
         </constraints> 
         <segments> 
          <segment title="First"/> 
          <segment title="Second"/> 
         </segments> 
        </segmentedControl> 

kolayca şeyler bulabilirsiniz yüzden bir userLabel eklemektir.

Not: film şeridi okuma çok aydınlatıcıdır. Film şeridi dosyasının değiştirilmesi ÇOK tehlikelidir.

35

Eğer Interface Builder "Yükseklik" pin (menü Editor -> Pin-> Height seçmek yoluyla durumda segment denetimini seçin) ne zaman dolaylı olarak değiştirebilirsiniz.

Bu denetim için düzenleyebileceğiniz kısıtlamalar listesine yeni bir Yükseklik kısıtlaması ekler. Aşağıdaki Ekran Görüntüsü'nde görebileceğiniz gibi değişiklikler doğrudan InterfaceBuilder'da yansıtılır.

interface builder height constraint

+1

güzel :) Bu sadece iOS 6 için çalışır. – code4j

+4

Harika yardım. Teşekkürler. Evet, yalnızca iOS6, ancak Şubat 2013 itibariyle, bu iOS cihazlarının% 83'üydü. http://www.tuaw.com/2013/02/13/chitika-all-versions-of-ios-6-now-account-for-83-1-of-ios-traf/ –

+0

Gezinme içine gömüldüğünde Bar, değişemeyiz gibi görünüyor. – ZYiOS

1

Biz Bundan sonra biz kapalı autolayout autolayout ve ardından set yüksekliğini ayarlayabilirsiniz. Bu yüzden diğer ios 6.0 için yardımcı olacaktır. Eğer kontrol seçip altında çerçeve özelliğini ekleyebilirsiniz Interface Builder içine yapmak için

2

"Kullanıcı Tanımlı Runtime Nitelikler"

add frame attribute inside interface builder