Corsi di programmazione web e mobile online
Pagina 1 di 2 12 UltimaUltima
Risultati da 1 a 10 di 13

Discussione: UILabel con solo gli angoli superiori o inferiori smussati

Visualizzazione Ibrida

Messaggio precedente Messaggio precedente   Nuovo messaggio Nuovo messaggio
  1. #1
    Junior Member
    Data Registrazione
    Sep 2012
    Messaggi
    14

    UILabel con solo gli angoli superiori o inferiori smussati

    Ciao ragazzi,
    come ho indicato nell'oggetto del messaggio vorrei creare una UILabel con solo gli angoli superiori o inferiori smussati. Lo faccio come esercizio.

    Io ho creato una classe:

    Codice:
    Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.
    e l'implementazione

    Codice:
    Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.
    Il problema è che quando la utilizzo ho sempre tutti gli angoli smussati...

    Codice:
    Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.

    Qualche consiglio?


    Grazie

  2. #2
    Administrator L'avatar di ignazioc
    Data Registrazione
    Jul 2010
    Messaggi
    3,912
    l'equivalenza tra due oggetti non si fa con == ma con i metodi appropriati, in questo caso [stringa isEqualToString:]

    La mia libreria su anobii e la wishlist su amazon.co.uk e il mio hosting provider

  3. #3
    Junior Member
    Data Registrazione
    Sep 2012
    Messaggi
    14
    Citazione Originariamente Scritto da ignazioc Visualizza Messaggio
    l'equivalenza tra due oggetti non si fa con == ma con i metodi appropriati, in questo caso [stringa isEqualToString:]
    Si hai ragione, programmando in C# ogni tanto faccio un mix. Il punto è che comunque non crea una UILabel come quella che vorrei...

  4. #4
    Administrator L'avatar di ignazioc
    Data Registrazione
    Jul 2010
    Messaggi
    3,912
    Citazione Originariamente Scritto da Mojopin Visualizza Messaggio
    Si hai ragione, programmando in C# ogni tanto faccio un mix. Il punto è che comunque non crea una UILabel come quella che vorrei...
    ma non dovresti dirci qualcosa di più? non sto a guardare il metodo drawrect perché suppongo che sia corretto ma viene richiamato correttamente? visto che usi una variabile di istanza sei sicuro che sia valorizzata quando entri nel drawrec? e quando setti la variabile visto che devi ri-aggiornare la view la chiami setneedlayout?

    quello che voglio dire è che quando un mio pezzo di codice non funziona faccio mille prove e vado di debug per capire almeno se c'è qualche pezzo di codice che non viene eseguito o che viene eseguito quando non me lo aspetto...

    La mia libreria su anobii e la wishlist su amazon.co.uk e il mio hosting provider

  5. #5
    Approfitto con una domanda anche se un po'(tanto) OT. Come sai Ignazio sono molto ignorante nella propedeutica alla programmazione. C'è un wiki o una pagina che mostra tutte le equivalenze? Per esempio spesso ho visto usare il punto di domanda che non ho idea cosa sia.

  6. #6
    il punto di domanda permette di effettuare un operazione condizionale abbreviata. Ti faccio un esempio, se vuoi testare una variabile booleana facendo in modo che se risultava vera una variabile intera prende 1 altrimenti prende zero, puoi fare cosi:
    Codice:
    Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.
    Oppure con il costrutto condizionale abbreviato:
    Codice:
    Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.
    Facendo cosi ci si può sbizzarrire rendendo il codice veramente difficile da comprendere

  7. #7
    Administrator L'avatar di ignazioc
    Data Registrazione
    Jul 2010
    Messaggi
    3,912
    Non conosco una pagina simile ma le cose da sapere non sono molte.
    In obj-c non c'è l'override degli operatori quindi l'operatore "==" fa sempre e solo una cosa: testa l'equivalenza tra due valori, in particolare però devi ricordarti che quando usi un oggetto in realtà stai usando un puntatore quindi == tra due oggetti ne testa il valore del puntatore. Il risultato? Ritorna TRUE sono se i due puntatori puntano al medesimo oggetto.
    A = nsstring
    B = A
    A == B //TRUE

    In linguaggi come il C++ puoi fare l'override degli operatori quindi quello che ho detto non si applica.
    Per l'equivalenza tra oggetti esiste il primitivo isEqual: che è definito in nsboject ma poi ogni classe lonreimplementa secondo la propria logica e magari ne aggiunge altre, per esempio nsstring ha diversi metodi per testare l'equivalenza.

  8. #8
    Ah quindi questo punto di domanda serve solo a riaprire il codice dopo un mese e non capirci più una mazza... interessante.

    Grazie della spiegazione ignazio... tutto quello che mi hai spiegato lo sapevo e lo applico, immaginavo ci fossero anche dei tipi di confrondo meno specifici, per esempio (sembra assurdo e non so quando potrebbe servire) +-= ,oltre ai classici == >= <=, quando un valore è più o meno simile... non che io abbia mai avuto bisogno di questo tipo di confronto... cmq grazie delle risposte torniamo in topic.


    Provo a dare la risposta (tipo quiz televiso)

    Ma è normale che prima disegni tutta label custom in modo che abbia gli angolo arrotondati solo da un lato e poi quando la implementi setti un banalissimo cornerradius?

  9. #9
    Junior Member
    Data Registrazione
    Sep 2012
    Messaggi
    14
    Ignazio tutte quelle cose che dici le faccio anche io. Se scrivo qui è perché ho fatto mille prove. La variabile è valorizzata correttamente e il metodo drawrect legge il valore corretto. Il punto è che quel metodo disegna curve dove non dovrebbe.

    E comunque se si posta del codice non è detto che sia corretto il codice, altrimenti non servirebbero i forum...

  10. #10
    Administrator L'avatar di ignazioc
    Data Registrazione
    Jul 2010
    Messaggi
    3,912
    Il codice mi è sembrato piuttosto confuso..mischi metodi di quartz con roba di coregraphics...ecco il codice corretto.

    Questa è la dichiarazione della label (niente più layer etc)
    Codice:
    Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.

    Header della classe con l'enum per il tipo di label che vuoi ottenere, volendo i valori di questa enum possono essere messi in or per realizzare le tipiche enum di configurazione con gli operatori bitwise ma bisognerebbe scrivere il codice poi per esaminare i singoli bit, cosa che (come diceva il mio professore) lascio alla buona volontà dello studente
    Codice:
    Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.

    e questa è l'implementazione, come vedi ci sono alcune differenze come il save&restore del context, l'uso della enum e una serie di valori di default.
    L'utilizzo della variabile "rectColor" è dovuto al fatto che la UILabel ha la proprietà backgroundcolor, ma se utilizzassimo quella poi nel [super drawrect] tutta la view verrebbe colorata, mentre in questo caso in 'rettangolo' sotto può avere un colore oppure essere trasparente, mentre la label con gli angoli arrotondati avrà il colore desiderato.

    Codice:
    Solo gli utenti registrati possono visualizzare il codice. Only registered members can view code.
    Questo è il risultato con le opzioni di default.

    Screen Shot 2012-11-25 at 9.37.12 PM.png



    ...e comunque...avevi ragione il codice non era corretto

    La mia libreria su anobii e la wishlist su amazon.co.uk e il mio hosting provider

Tag per Questa Discussione

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •