Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c OSX可访问性API最小宽度_Objective C_Cocoa_Macos_Layout - Fatal编程技术网

Objective c OSX可访问性API最小宽度

Objective c OSX可访问性API最小宽度,objective-c,cocoa,macos,layout,Objective C,Cocoa,Macos,Layout,我找到了另一个解释如何使用可访问性API获取窗口的宽度、高度和位置的方法。有没有办法找到最小尺寸、最大尺寸、调整增量等 编辑: 我目前的方法是使用AXUIElementCopyAttributeValue,但我不确定这是否可行。看看你可以看到有很多属性我可以访问,但我找不到任何关于窗口最小或最大大小的提及。注意,似乎可以通过此API访问该位置 现在我也在看一些名为的示例代码,它也可以访问窗口大小和位置,但我不认为该方法适用于最小或最大大小。据我所知,没有简单的方法。我发现了一种非常粗糙的方法来获

我找到了另一个解释如何使用可访问性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
是我从一个名为

此外,您可能还需要纵横比。