在Xcode 5 OSX,而不是ios中,我创建了一个视图并设置了自动布局约束,以便视图的两侧与框架保持固定的距离。视图通过在运行时拖动窗口的角来正确扩展,但是视图的内容在大小上仍然是固定的。内容由Bezier路径组成。缩小可以裁剪内容,扩展在不变的内容旁边提供了大量的开放空间。
我还注意到,在窗口的大小检查器中,更改窗口的小彩色窗口中的初始位置并不会在运行时更改窗口在屏幕上的位置。它出现在与上次运行时相同的位置。大小也保持不变。然后可以在屏幕上移动和调整大小,并在下一次运行时显示在那里。
如何使内容与视图和窗口一起缩小或膨胀?
如何使窗口的大小检查器控制屏幕上的初始位置?
提前谢谢。
发布于 2014-09-30 18:19:28
@JeremyP:谢谢你的指导。
这就是起作用的地方。如果有趣的话,这段代码和我的评论可以在code @lists.apple.com,9/29/2014 8:35下午8:35看到,关于使用格雷厄姆·考克斯的大纲的成功。包括这一切都将是冗长的,可能会造成混乱。
// scale the content to track the frame
{
NSBezierPath *path;
NSRect bounds;
CGFloat scaleX,scaleY;
}
scaleX =NSWidth(bounds)/NSWidth([path bounds]);
scaleY =NSHeight(bounds)/NSHeight([path bounds]);
NSAffineTransform* tfm = [[NSAffineTransform alloc] init];
[tfm scaleXBy:scaleX yBy:scaleY];
NSBezierPath* temp = [tfm transformBezierPath:path];
// [tfm concat];
[temp stroke];发布于 2014-09-24 02:02:09
您大概可以用代码绘制视图的内容。你可以选择做任何你想做的事。如果希望视图的纵横比以某种方式更改绘图,请将该逻辑合并到代码中。
您还可以将视图的bounds rect设置为与其frame rect不同。一旦设置了界限,它们就不再自动与帧保持同步。因此,从边界到帧的转换不再是1到1的映射.当您更改框架时,并且考虑到边界不会改变以跟踪它,映射将有效地缩放视图的内容。
决定界限由你来决定。例如,您可以将其设置为单元rect (原名为(0,0),大小为1x1)。显然,您需要在绘图代码中说明坐标系统。
至于窗口大小:您已经为您的窗口设置了自动保存名。这样做的全部目的是保存窗口的位置,并在下次显示窗口时恢复它。如果不想要这种行为,就不要设置(即清除)窗口的自动保存名称。
https://stackoverflow.com/questions/26006747
复制相似问题