20

Sto creando un numero di personalizzato statico UITableViewCells e ho trascinato uno UISegmentedControl su una delle celle personalizzate.UISegmentedControl - modifica dell'altezza in Interface Builder

Mentre il controllo segmentato mi consente di modificare la sua larghezza, non posso modificare la sua altezza in Interface Builder (quella proprietà è disattivata in 44 nella sezione 'size' della finestra di ispezione Proprietà).

So che uno UISegmentedControl può essere creato con un'altezza personalizzata nel codice e aggiunto a UITableViewCell. C'è un modo per regolare l'altezza del controllo segmentato in Interface Builder?

risposta

2

Non sono sicuro in IB, ma è sempre possibile trovare la cella nel codice e regolare a livello di programmazione l'altezza di UISegmentedControl.

39

Puoi anche aprire il file xib in qualsiasi editor di testo, come Dashcode o MacVim o TextEdit - è un XML. Poi trovare il vostro elemento lì, nel mio caso sembrava:

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

Quindi è possibile cambiare il 44 in qualunque altezza desiderata - vedrete i cambiamenti nella IB.

Questo funziona per tutti gli elementi che non possono essere modificati in altezza IB - UIPicker anche ...

+5

Very nice.Ora biasimiamo Apple per non averci permesso di modificarlo in IB, in primo luogo –

+0

Risposta stupenda! Apple fallisce! –

+0

#highqualityanswer Questa è stata l'unica soluzione che ha funzionato per me su Xcode 5.1 Grazie! – GangstaGraham

1

voglio aggiungere alla risposta di Kender.

Se si utilizzano storyboard piuttosto che XIB, sarà necessario aggiungere:

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

L'ID può essere qualcosa di unico credo. Forse scegli un ID e modifica una lettera?

Questo è il codice completo

<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> 

aggiungo un userLabel in modo da poter facilmente trovare la roba.

Nota: la lettura dello storyboard è molto illuminante. La modifica del file dello storyboard è MOLTO pericolosa.

35

È possibile modificarlo indirettamente quando si preme "Altezza" in Interface Builder (selezionare il controllo di segmento quindi tramite il menu selezionare Editor -> Pin-> Height).

Questo aggiungerà un nuovo vincolo di altezza all'elenco dei vincoli per quel controllo che è possibile modificare. Le modifiche riflettono direttamente in InterfaceBuilder come puoi vedere nello screenshot qui sotto.

interface builder height constraint

+1

nice :) BUt funziona solo per iOS 6 – code4j

+4

Grande aiuto. Grazie. Sì solo per iOS6, ma a partire da febbraio 2013 era l'83% dei dispositivi iOS. http://www.tuaw.com/2013/02/13/chitika-all-versions-of-ios-6-now-account-for-83-1-of-ios-traf/ –

+0

Quando è incorporato nella navigazione bar, sembra che non possiamo cambiare. – ZYiOS

1

Possiamo impostare layout automatico e quindi impostare l'altezza, dopo che possiamo fuori autolayout. quindi sarà utile per gli altri ios 6.0.

2

Per farlo all'interno Interface Builder è possibile selezionare il controllo e aggiungere l'attributo telaio sotto "Runtime definito dall'utente Attributi"

add frame attribute inside interface builder

Problemi correlati