Demostración de la barra lateral - replaceSubview
Frecuentes
Visto 642 equipos
4
Tengo NSSplitView con un estilo de divisor configurado como delgado y se ve muy bien.
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?
1 Respuestas
4
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 objective-c macos nsview nssplitview or haz tu propia pregunta.
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? - isaac
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: pawelropaUna 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. - isaac
autoLayout está desactivado, y las máscaras de tamaño automático son las mismas. - pawelropa