2014-11-06 8 views
8

Non riesco a capire come disattivare il ritaglio sottoschermo/sottolivello quando la mia vista personalizzata è definita in Interface Builder. Quando creo la vista a livello di codice, e faccio la configurazione trovata in molte domande qui su StackOverflow, funziona bene sia per le visualizzazioni secondarie aggiunte a una vista, sia per i sottolivelli aggiunti a view.layer. Queste cose sono:Impossibile disattivare il clipping delle istanze NSView create in Interface Builder

((NSView*)containingWindow.contentView).wantsLayer = YES; 
view.wantsLayer = YES; 
view.layer.masksToBounds = NO; 

Una volta che questi sono fatti (in questo ordine), tutto funziona alla grande per le viste che vengono creati nel codice. Se faccio la stessa cosa (o QUALUNQUE altra cosa, per quella questione) per le viste create in IB, non ottengo da nessuna parte.

Ho provato con un NSView personalizzato che definisce il metodo:

- (CALayer*)makeBackingLayer { 
    CALayer* layer = [CALayer layer]; 
    layer.masksToBounds = NO; 

    return layer; 
} 

- (BOOL)wantsDefaultClipping { 
    return NO; 
} 

non aiuta. Ho anche provato a selezionare la casella in "Core Animation Layer" in View Effects in IB. Neanche questo ha aiutato. Alla fine, ho provato a disattivare i vincoli, nel caso in cui fosse responsabile. Non ha funzionato neanche.

Qualsiasi aiuto è apprezzato. Una cosa che noto è che il mio layer di backup visualizza "masksToBounds" inizia NO, come l'ho impostato, ma quando registro la gerarchia della vista in un secondo momento, è diventato SÌ sulla stessa vista (verificato dal suo indirizzo di memoria)

+0

Hai trovato una risposta a questo? Sto avendo problemi simili, anche se non sto usando IB. –

risposta

-3

Prova:

myView.wantsDefaultClipping = NO; 

e di farlo anche per le viste del bambino.

+0

"wantsDefaultClipping" non è una proprietà da impostare, solo un metodo che deve essere implementato nella visualizzazione personalizzata. E sì, ci ho provato. –

+0

@Eric e provato per le visualizzazioni figlio? – nicael

+0

Sì, e la cosa equivalente per CALayer (childLayer.maskstoBounds = NO;). L'unica differenza sembra essere se la vista principale è creata da un NIB o fatta in codice. –

Problemi correlati