Demostración de la barra lateral - replaceSubview

Tengo NSSplitView con un estilo de divisor configurado como delgado y se ve muy bien. enter image description here

Sin embargo, si reemplazo una de las subvistas con esta línea de código

[self.horizontalSplitView replaceSubview:[[self.horizontalSplitView subviews] objectAtIndex:0] with:myGreatView];

El divisor se ve un poco mal, ¿cómo puedo solucionar este problema?

enter image description here

preguntado el 30 de junio de 12 a las 17:06

Establezca un punto de interrupción de depuración en XCode o registre los marcos rectos de la vista de la columna izquierda antes y después del cambio; observe si los marcos son idénticos antes y después de que se produzca el intercambio. ¿Es la vista de reemplazo de la misma clase que está reemplazando? -

El marco difiere, pero incluso si configuro el marco antes de reemplazar la subvista NSRect prevFrame = [[self.horizontalSplitView.subviews objectAtIndex:0] frame]; self.sideBarViewController.view.frame = prevFrame; no ayuda. Bueno, no es la misma clase per se, es una subclase de NSView:

Una cosa para verificar son los atributos de autoLayout. Si los marcos son diferentes, claramente es un problema de diseño, y si sabe que está configurando los marcos correctamente, entonces claramente alguien más piensa lo contrario (en algún lugar fuera del alcance). Si la vista original y la vista con la que la está reemplazando tienen, por ejemplo, máscaras de diseño automático diferentes, es posible que vea este tipo de comportamiento cuando la supervista intenta diseñar las vistas de acuerdo con sus respectivas características de anclaje y cambio de tamaño. -

autoLayout está desactivado, y las máscaras de tamaño automático son las mismas. -

1 Respuestas

El problema es que tu vista (myGreatView) tiene un borde. Establezca el tipo de borde en NSNoBorder.

[myGreatView setBorderType:NSNoBorder];

Respondido 04 Jul 12, 02:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.