Jon*_*ess 12
每个NSView都有一个边界和框架,框架是描述视图在其超视图边界内的位置的矩形.大多数视图都有一个零起点的边界,以及与其框架大小相匹配的大小,但不一定是这种情况.您可以更改视图边界和框架的关系以缩放并转换自定义绘图和子视图.更改视图的边界时,它还会以递归方式影响后代视图的绘制.
更改视图边界的最直接方法是 - [NSView scaleUnitSquareToSize:].在您的一个视图中,尝试调用[self scaleUnitSquareToSize:NSMakeSize(2.0,2.0)],您应该看到其中的所有内容的大小看起来是双倍的.
这是一个例子.使用包含自定义视图和按钮的窗口创建XIB文件.将自定义视图的自定义类设置为MyView.将按钮的操作连接到视图的doubleSize:操作.构建并运行并按下按钮.每次按下时,自定义视图中的红色方块的大小应加倍.
/// MyView.h
@interface MyView : NSView {
}
- (IBAction)doubleSize:(id)sender;
@end
/// MyView.m
@implementation MyView
- (IBAction)doubleSize:(id)sender {
[self scaleUnitSquareToSize:NSMakeSize(2.0, 2.0)];
/// Important, changing the scale doesn't invalidate the display
[self setNeedsDisplay:YES];
}
- (void)drawRect:(NSRect)dirtyRect {
NSSize squareSize = NSMakeSize(8, 8);
NSRect square = NSMakeRect([self bounds].size.width / 2 - squareSize.width / 2,
[self bounds].size.height / 2 - squareSize.height / 2,
squareSize.width,
squareSize.height);
[[NSColor redColor] set];
NSRectFill(square);
}
@end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4581 次 |
最近记录: |