Насколько я могу судить, простого пути не существует. Я нашел один очень грубый метод получения максимального и минимального размера окна.
Это включает в себя установку ширины и высоты на очень большое число, чтобы увидеть, как далеко изменяется размер окна, затем запоминание этого размера как максимального, затем установку ширины и высоты на небольшое число и повторение того же самого. После всего этого я просто сбросил ширину и высоту к их исходным значениям.
Очевидная проблема с этим заключается в том, что пользователю очень хорошо видно, что размер окна был изменен.
Что касается приращений размера, я не могу представить (на данный момент) никакого обходного пути для получения этой информации.
В любом случае вот код, который у меня есть для определения максимального и минимального размера:
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];
Если вам интересно, UIElementUtilities
- это класс, который я взял из одного из примеров проектов Apple, который называется UIElementInspector .