2015-09-28 4 views
8

Ancora una volta Xcode IB frustra gli sviluppatori con avvertimenti inutili: non riesco a rimuovere questo avviso dal mio progetto Xcode.Xcode IB Stupid Warning

enter image description here

Quando doppio clic l'avviso che porta in primo piano il mio file MainMenu.xib ma dà alcun riferimento a ciò che sta causando il problema. Qualche idea?

EDIT:

Ho ridotta gran parte della mia .xib per la pubblica visione ma hanno ancora l'errore con pochissimi oggetti. È possibile trovare il file qui: https://www.dropbox.com/s/r2piuojr86dhlt9/MainMenu.xib?dl=0

+0

puoi creare un progetto di esempio ridotto a zero dimostrando questo avviso disponibile da qualche parte? –

+0

@MichaelDautermann Ho provato ad isolare il problema rimuovendo gli oggetti uno per uno, ma l'avviso appare ancora fino a quando ogni oggetto è stato rimosso dal file –

+0

sì! Questo è il motivo per cui speravo di vedere un progetto di esempio che dimostrasse il problema, quindi avrei potuto provare a capirlo per te (e per tutti gli altri :-). Elimina tutto tranne un oggetto nello xib (dove appare ancora l'avviso). –

risposta

2

Questo è un avviso mostrato a partire da Xcode 7 quando gli elementi dell'interfaccia utente come un'intestazione di colonna di visualizzazione di tabella o di tabella utilizzano uno stile di carattere o una variazione che è disponibile sul sistema operativo precedente (e ovviamente il tuo il progetto li sta ancora bersagliando).

Nel mio progetto un'intestazione di colonna vista tabella utilizzava il carattere di sistema con variazione di stile di carattere "medio" invece di regolare su un progetto di targeting OS X 10.9+.

La cosa strana è che ho dovuto riavviare Xcode come Interface Builder ha rifiutato di cambiare lo stile del controllo. Forse un piccolo problema di questa versione di Xcode 7.0.1.

In ogni caso, l'impostazione di ogni stile di controllo su Regular o la modifica della destinazione del progetto su 10.11 dovrebbe risolvere l'avviso.

0

Ancora una volta Xcode IB frustra gli sviluppatori con avvertimenti inutili.

Feltri allo stesso modo anche su di esso, fino a quando ho visto come la mia tipografia differisce in 10.10 rispetto a 10.11. Una cosa è vera: il messaggio è spazzatura senza indicare un elemento problematico dello storyboard, vedi P.S section of the post per una semi-soluzione.

risposta attuale quasi lo ottiene, ma il problema non è con stili di carattere che non è disponibile a obiettivi più grandi, è con Xcode non gestisce in modo corretto, vedere full blog post per i dettagli.

Se si desidera mantenere i propri stili, utilizzare un campo di testo personalizzato con proprietà personalizzate ispezionabili. Apri la finestra di ispezione dell'identità e imposta la classe personalizzata su TextField, l'attributo di peso font preferito verrà visualizzato nell'ispettore Attributi, imposta il valore richiesto, crea e gusta il risultato.

import AppKit 

@IBDesignable public class TextField: NSTextField 
{ 
    @IBInspectable public var preferredFontWeight: Int = 0 

    override public func awakeFromNib() { 
     if #available(OSX 10.11, *) { 
      return 
     } 

     guard 
     let weight: Int = self.preferredFontWeight where weight > 0, 
     let font: NSFont = self.font, 
     let name: String = font.familyName, 
     let manager: NSFontManager = NSFontManager.sharedFontManager() else { 
      return 
     } 


     // Full details here – https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSFontManager_Class/#//apple_ref/occ/instm/NSFontManager/convertWeight:ofFont: 
     // 
     // 1 – ultralight 
     // 2 – thin 
     // 3 – light, extralight 
     // 4 – book 
     // 5 – regular, display 
     // 6 – medium 
     // 7 – demi, demibold 
     // 8 – semi, semibold 
     // 9 – bold 
     // 10 – extra, extrabold 
     // 11 – heavy 
     // 12 – black 
     // 13 – ultrablack 
     // 14 – extrablack 

     if let font: NSFont = manager.fontWithFamily(name, traits: manager.traitsOfFont(font), weight: weight, size: font.pointSize) { 
      self.font = font 
     } 
    } 
} 

Se non vi interessa veramente per gli stili, Usa i caratteri di peso normale per tutto il testo, che dovrebbe risolvere il problema, vedere il mio precedente answer per le opzioni disponibili.