Por lo que puedo decir, no hay una manera fácil de hacerlo. He encontrado un muy crudo método para obtener el tamaño máximo y mínimo de la ventana.
Implica establecer el ancho y alto en un número muy grande para ver cuánto cambia el tamaño de la ventana y luego recordar este tamaño como máximo, luego establecer el ancho y alto en un número pequeño y hacer lo mismo nuevamente. Después de todo esto, restablecí el ancho y la altura a sus valores originales.
El problema obvio con esto es el hecho de que es muy visible para el usuario que la ventana ha sido redimensionada.
En cuanto a los incrementos de cambio de tamaño, no puedo pensar (por el momento) ninguna solución para obtener esa información.
De todos modos aquí está el código que tengo para la elaboración de los valores máximo y mínimo:
AXUIElementRef window; // The window
AXValueRef sizeValue = (AXValueRef)[UIElementUtilities valueOfAttribute:@"AXSize" ofUIElement:window];
CGSize windowSize;
AXValueGetValue(sizeValue, kAXValueCGSizeType, &windowSize);
CGFloat windowWidth = windowSize.width;
CGFloat windowHeight = windowSize.height;
// Set it to a very large number
[UIElementUtilities setStringValue:@"w=5000 h=5000" forAttribute:@"AXSize" ofUIElement:window];
AXValueRef maxSizeValue = (AXValueRef)[UIElementUtilities valueOfAttribute:@"AXSize" ofUIElement:window];
CGSize maxWindowSize;
AXValueGetValue(maxSizeValue, kAXValueCGSizeType, &maxWindowSize);
CGFloat maxWindowWidth = maxWindowSize.width;
CGFloat maxWindowHeight = maxWindowSize.height;
NSLog(@"max width = %f. max height = %f.", maxWindowWidth, maxWindowHeight);
// Set it to a very small number
[UIElementUtilities setStringValue:@"w=0 h=0" forAttribute:@"AXSize" ofUIElement:window];
AXValueRef minSizeValue = (AXValueRef)[UIElementUtilities valueOfAttribute:@"AXSize" ofUIElement:window];
CGSize minWindowSize;
AXValueGetValue(minSizeValue, kAXValueCGSizeType, &minWindowSize);
CGFloat minWindowWidth = minWindowSize.width;
CGFloat minWindowHeight = minWindowSize.height;
NSLog(@"min width = %f. min height = %f.", minWindowWidth, minWindowHeight);
// Reset size
[UIElementUtilities setStringValue:[NSString stringWithFormat:@"w=%f h=%f", windowWidth, windowHeight] forAttribute:@"AXSize" ofUIElement:window];
En caso de que se preguntan, UIElementUtilities
es una clase que he tomado de uno de los proyectos de ejemplo de Apple llamados UIElementInspector.
También es probable que desee relación de aspecto. –