Cocoa自定义控件

Cocoa自定义控件,第1张

概述Cocoa自定义控件编写 首先我们要知道所有的显示给用户的图像都是在view上呈现的 如何编写自定义控件 程序的canvas在cocoa中称为context(中文狗翻译:上下文)。 context中定义了画布大小,颜色等信息。 一旦你有了context,你就可以要求Cocoa开始你想要的绘画了。 绘图的基本单位是path,一个path代表了任意形状:圆,正方,多边等。path可以stroke或者f Cocoa自定义控件编写@H_301_8@

首先我们要知道所有的显示给用户的图像都是在vIEw上呈现的

如何编写自定义控件

程序的canvas在cocoa中称为context(中文狗翻译:上下文)。
context中定义了画布大小,颜色等信息。
一旦你有了context,你就可以要求Cocoa开始你想要的绘画了。
绘图的基本单位是path,一个path代表了任意形状:圆,正方,多边等。path可以stroke或者filled,stroking是描边,filling是填色。当然它们可以是半透明的,你单单通过这两个功能即能绘出很多精彩的图案。

Pixel GrID

在iOS中左上角的坐标点为(0,0),而在OS X上左下角为(0,0)。 在写程序中像素点和屏幕点必须区别对待,(100,100)是屏幕中的(100,100)不一定代表着像素点的实际位置。这样可以在不同的屏幕上适配。

在vIEws中绘图

我们先看vIEws是怎么工作的。首先我们要明白vIEw就是一个window窗口矩形框里面的一块画布。如果vIEw移动了或者不在窗口框里,那么用户只能看到一部分或者看不到东西。

Frame Rectangles

frame rectangle定义了vIEw的大小位置。
一个vIEw可以有很多subvIEws。subvIEw是跟着supervIEw移动的。它的frame rectangle也是相对supervIEw的。在OS X中为NSVIEw,在iOS中是UIVIEw。它们两者没有太大区别。

overrIDe func drawRect(rect: NSRect){}

当系统需要显示一个vIEw,它就发送一个drawRect的message给vIEw,在iOS中NSRect变成CGRect

当这个方法被调用时,graphics context已经准备好绘画了。等方法结束return后graphics context被系统收回并显示刚才绘图的内容。
我们称需要被更新的区域叫做dirty rectangle,例如当窗口被另外窗口遮住的时候,我们点击后,只是将一部分的内容重绘制而其他不变,节约系统开销,我们称需要重绘的部分叫dirty rectangle。

Bounds Rectangles

顾名思义,保存着边界的信息。这个还是有用的,比如手机旋转,则frame rectangle的小大和位置都要改变,来适应手机横置。但是Bounds Rectangles不会变化。因为frame rectangle是相对于supervIEw的,而Bounds Rectangle是相对于Globle position的。

打造自己的VIEw 1. 总结

以上是内存溢出为你收集整理的Cocoa自定义控件全部内容,希望文章能够帮你解决Cocoa自定义控件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1050965.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存