UIView, layer e frame. Personalizzare la grafica degli elementi

Giuseppe Sapienza

UIView, layer e frame. Personalizzare la grafica degli elementi

Per favore acquista corso prima di iniziare la lezione.

Compatibile con Xcode

Hai un problema con la lezione? scrivi un commento in fondo alla pagina - non mordo!

Non tutti vorranno spendere cento dollari per acquistare Sketch e non tutti hanno la possibilità di consultare un grafico. Allora come creare effetti simili con la programmazione? Ritorniamo un attimo indietro. Il ViewController è la classe che controlla la finestra visualizzata dall'utente. Questa finestra prende il nome di UIView. Dato che nell'Interface Builder il concetto di [...]

Lista Lezioni

Corso creare applicazioni per iOS con il linguaggio Swift

Torna a: Corso creare applicazioni per iOS con il linguaggio Swift > Sketch ed interfacce in Xcode
  • Marco

    Ciao Peppe,
    mi sa che ti abbiamo spiazzato!! non pensavi fossimo cosi bravi da raggiungerti con l’avanzamento dei moduli :)
    In attesa dei prossimi moduli

    • Hahah no infatti, stai andando velocissimo!
      Ma ti terrò molto impegnato con il prossimo blocco in arrivo ;)

  • Alessandro

    Ciao Peppe rimango anche io in attesa ;-)

  • Alessandro

    Ciao Peppe,
    Ho una domanda, provando a rifare l’esercizio, ho voluto inserire una label e da codice arrotondare i bordi ed inserire l’ombra come fatto per il button.
    L’ombra è stata aggiunta ma i raggi no…
    Premetto che no utilizzato l’estensione della classe UIView e ho invocato il metodo
    Self.myLabel.addCorner(30)

    Grazie mille

    • Ciao Alessandro,

      Effettivamente è un po’ che non mettevo un corner ad una label. Hanno modificato una proprietà che deve essere passata a true per effettuare quella modifica.
      Praticamente viene attacca una maschera ai bordi della label che ti permette di utilizzare il corner radius e altre funzioni di grafica.

      Prima di modificare il corner radius, scrivi questa riga di codice:

      self.myLabel.layer.maskToBounds = true

      Fammi sapere ;)

      • Alessandro

        Ciao peppe,
        facendo così riesco effettivamente ad aggiungere i raggi, però non aggiunge più l’ombra.
        Ho provato sia invocando l’extension sia come nella foto allegata
        Probabilmente non mi servirà mai questa cosa, però credo sia utile sapere come realizzarla senza ricorrere a sketch
        Perdonami se stresso

  • gervas

    Ciao Peppe, ho provato come Alessandro a lavorare su una label ed inserendo quel codice que dici te funziona il corner radius, ma non riesco a mettere ombra con shadowOffset…c’è qual que codice che aggiungere anche per questo?
    Grazie!

    • Ciao Gervas,
      L’unica soluzione utile è quella fornita da questa domanda su stackoverflow http://stackoverflow.com/questions/24644802/swift-problems-with-corner-radius-and-drop-shadow

      Se dovessero esserci problemi, fammi sapere.
      Giuseppe Sapienza

      • gervas

        l’ho guardato…un può dura da capire, cercherò di fare delle prove caso mai ti chiedo ancora.
        ti volevo chiedere anche: come faccio a scrivere su una label più di una riga (in due o tre) ed a controllare ogni riga (fonte,misura delle lettere) in modo separato ma a partire dal codice?
        grazie!

        • Per scrivere una Label in multi riga, ti basta modificare l’attributo omonimo nell’Attribute Inspector. Per quanto riguarda il controllo non puoi. Ogni Label può utilizzare solamente un Font. Al massimo dovresti creare 3 Label con font diversi.

  • Marco Dognini

    Ciao Peppe,

    Una domanda: come faccio ad aggiornare il Main.Storyboard con le modifiche fatte nel ViewController.swift?
    Ad es. se modifico il titleLabel di un bottone con setTitle vedo la modifica quando avvio il Simulator però se vado nel main.Storyboard vedo ancora “Button”
    Anche se creo un bottone dal ViewController mi aspettavo poi di vederlo piazzato nell’interfaccia.
    Grazie

    • Ciao Marco, è normale che tu non veda la modifica nel file Storyboard, perché il codice che modifica il titolo del bottone (quello nel ViewController.swift) viene eseguito nel simulatore solo nel momento in cui avvii l’App, e non viene memorizzato per gli avvii seguenti. Sostanzialmente, tutte le modifiche che effettui via codice che scrivi nel file ViewController.swift le vedrai solo e soltanto quando avvierai l’App! Spero di esserti stato chiaro :D
      Per qualsiasi chiarimento, non esitare a scriverci :)

      • Marco Dognini

        Ciao Emanuele, la tua risposta è chiarissima, quello che non mi è chiaro è il senso di questa cosa…o meglio, la procedura “ideale” quindi sarebbe quella di utilizzare il Main.Storyboard per la creazione dell’interfaccia e di scrivere il codice nel ViewController solo per quelle proprietà delle UIView che non sono presenti nell’Interface builder, corretto? (Oppure crearle in Sketch ed importarle, che forse rimane l’opzione migliore per grafiche più complesse)
        Grazie
        Marco

        • Dunque, come progettare un’interfaccia è una scelta soggettiva, c’è chi preferisce usare solo il codice, e c’è chi non potrebbe vivere senza la StoryBoard. Utilizzare quest’ultima è sicuramente il modo più semplice, intuitivo ed interattivo per progettare l’interfaccia di un’App :)
          Vale lo stesso discorso per le proprietà presenti nell’Interface Builder, la maggior parte (se non tutte) possono essere modificate nell’Identity Inspector, come puoi vedere nello screenshot allegato.
          Un saluto :D

Start typing and press Enter to search