Objective c OSX可访问性API最小宽度
我找到了另一个解释如何使用可访问性API获取窗口的宽度、高度和位置的方法。有没有办法找到最小尺寸、最大尺寸、调整增量等 编辑: 我目前的方法是使用Objective c OSX可访问性API最小宽度,objective-c,cocoa,macos,layout,Objective C,Cocoa,Macos,Layout,我找到了另一个解释如何使用可访问性API获取窗口的宽度、高度和位置的方法。有没有办法找到最小尺寸、最大尺寸、调整增量等 编辑: 我目前的方法是使用AXUIElementCopyAttributeValue,但我不确定这是否可行。看看你可以看到有很多属性我可以访问,但我找不到任何关于窗口最小或最大大小的提及。注意,似乎可以通过此API访问该位置 现在我也在看一些名为的示例代码,它也可以访问窗口大小和位置,但我不认为该方法适用于最小或最大大小。据我所知,没有简单的方法。我发现了一种非常粗糙的方法来获
AXUIElementCopyAttributeValue
,但我不确定这是否可行。看看你可以看到有很多属性我可以访问,但我找不到任何关于窗口最小或最大大小的提及。注意,似乎可以通过此API访问该位置
现在我也在看一些名为的示例代码,它也可以访问窗口大小和位置,但我不认为该方法适用于最小或最大大小。据我所知,没有简单的方法。我发现了一种非常粗糙的方法来获得窗口的最大和最小大小 它包括将宽度和高度设置为一个非常大的数字,以查看窗口大小调整的距离,然后记住此大小为最大值,然后将宽度和高度设置为一个较小的数字,然后再次执行相同的操作。在所有这些之后,我只是将宽度和高度重置为它们的原始值 这样做的一个明显问题是,用户可以非常清楚地看到窗口已调整大小 至于调整大小的增量,我(目前)想不出任何办法来获取这些信息 无论如何,以下是我计算最大和最小尺寸的代码:
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
是我从一个名为 此外,您可能还需要纵横比。