黑马程序员——oc之Foundation框架

 -------android培训java培训iOS培训.Net培训、期待与您交流! ----------

Objective-C开发中经常用到NSObject,那么这个对象到底是谁?它为什么又出现在Objective-C中间呢?我们将揭开这层面纱,重点分析在IOS开发中一个重要的框架Foundation,主要内容有:Cocoa不是一种编程语言(它可以运行多种编程语言),它也不是一个开发工具(通过命令行我们仍然可以开发Cocoa程序),它是创建Mac OS X和IOS程序的原生面向对象API,为这两者应用提供了编程环境。

我们通常称为“Cocoa框架”,事实上Cocoa本身是一个框架的集合,它包含了众多子框架,其中最重要的要数“Foundation”和“UIKit”。前者是框架的基础,和界面无关,其中包含了大量常用的API;后者是基础的UI类库,以后我们在IOS开发中会经常用到。这两个框架在系统中的位置如下图:

Cocoa

其实所有的Mac OS X和IOS程序都是由大量的对象构成,而这些对象的根对象都是NSObject,NSObject就处在Foundation框架之中,具体的类结构如下:

Foundation1


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 macOS 中,有多种方式进行坐标转换。以下是其中两种常见的方法: 1. 使用坐标转换函数 在 macOS 中,可以使用以下函数将一个坐标点从一个坐标系转换到另一个坐标系: ```objc NSPoint NSConvertPoint(NSPoint aPoint, NSRect fromRect, NSRect toRect); ``` 其中,`aPoint` 是需要转换的坐标点,`fromRect` 是源坐标系(通常是屏幕坐标系),`toRect` 是目标坐标系(通常是视图坐标系)。例如,要将屏幕上的坐标点转换为视图上的坐标点,可以这样写: ```objc NSPoint screenPoint = {100, 100}; // 屏幕坐标系 NSRect viewFrame = [self.view frame]; // 视图坐标系 NSPoint viewPoint = NSConvertPoint(screenPoint, nil, viewFrame); // 转换坐标 ``` 2. 使用坐标转换矩阵 另一种常见的方式是使用坐标转换矩阵。在 macOS 中,可以使用以下方法创建一个坐标转换矩阵: ```objc NSAffineTransform *transform = [NSAffineTransform transform]; [transform scaleXBy:scaleX yBy:scaleY]; [transform rotateByDegrees:rotation]; [transform translateXBy:translateX yBy:translateY]; ``` 其中,`scaleX` 和 `scaleY` 是缩放因子,`rotation` 是旋转角度,`translateX` 和 `translateY` 是平移量。例如,要将屏幕上的坐标点转换为视图上的坐标点,可以这样写: ```objc NSAffineTransform *transform = [NSAffineTransform transform]; [transform translateXBy:-viewFrame.origin.x yBy:-viewFrame.origin.y]; // 将视图坐标系移到原点 [transform concat]; // 应用坐标转换矩阵 NSPoint screenPoint = {100, 100}; // 屏幕坐标系 NSPoint viewPoint = [self.view convertPoint:screenPoint fromView:nil]; // 转换坐标 ``` 这里使用了 `NSView` 类的 `convertPoint:fromView:` 方法,将屏幕上的坐标点转换为视图上的坐标点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值