ios cgfloat取绝对值分正负吗

IOS开发之----CGFloat、CGPoint、CGSize和CGRect
CGGeometry类定义几何元素的结构和操作几何元素的函数。
1、数据类型:
CGFloat: 浮点值的基本类型
CGPoint: 表示一个二维坐标系中的点
CGSize: 表示一个矩形的宽度和高度
CGRect: 表示一个矩形的位置和大小
typedef float CGF// 32-bit
typedef double CGF// 64-bit
struct CGPoint {
typedef struct CGPoint CGP
struct CGSize {
typedef struct CGSize CGS
struct CGRect {
typedef struct CGRect CGR
注意:CGRect数据结构的高度和宽度可以是负数。例如,一个矩形的原点是[0.0,0.0]和大小是[10.0,10.0]。这个矩形完全等同原点是[10.0,10.0]和大小是[-10.0,-10.0]的矩形。
2、使用值来创建几何元素的方法
CGPointMake
CGRectMake
CGSizeMake
CGPoint CGPointMake (
CGFloat x,
CGSize CGSizeMake (
CGFloat width,
CGFloat height
CGRect CGRectMake (
CGFloat x,
CGFloat y,
CGFloat width,
CGFloat height
CGFloat ten=10.0f;
CGPoint point = CGPointMake(0.0f, 0.0f);
CGSize size = CGSizeMake(10.0f, 10.0f);
CGRect rect = CGRectMake(point.x, point.y, size.width, size.height);
NSLog(@"ten: %f", ten);
NSLog(@"point: %@", NSStringFromCGPoint(point));
NSLog(@"size: %@", NSStringFromCGSize(size));
NSLog(@"rect: %@", NSStringFromCGRect(rect));
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。CGFloat只是对float或double的typedef定义,在64位机器上,CGFloat定义为double类型,在32位机器上为float.
在xcode中按住Command键,点击CGFloat,可跳转至CGbase.h文件CGFloat的定义处。
#if defined(__LP64__) && __LP64__
# define CGFLOAT_TYPE double
# define CGFLOAT_IS_DOUBLE 1
# define CGFLOAT_MIN DBL_MIN
# define CGFLOAT_MAX DBL_MAX
# define CGFLOAT_TYPE float
# define CGFLOAT_IS_DOUBLE 0
# define CGFLOAT_MIN FLT_MIN
# define CGFLOAT_MAX FLT_MAX
/* Definition of the `CGFloat' type and `CGFLOAT_DEFINED'. */
typedefCGFLOAT_TYPE CGF
#define CGFLOAT_DEFINED 1
NSInteger为long或int的typedef,
NSUInteger为unsigned long或unsigned int的typedef。
这两个在NSObjCRuntime.h中定义。
#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedeflong NSI
typedefunsignedlong NSUI
typedefint NSI
typedefunsignedint NSUI
本文已收录于以下专栏:
相关文章推荐
最近由于编程的需要,对 C# 的类型转换做了一些研究,其内容涉及 C# 的装箱/拆箱/别名、数值类型间相互转换、字符的 ASCII 码和 Unicode 码、数值字符串和数值之间的转换、字符串和字符数...
转自:/csj007523/archive//2593269.html
1)int--&NSNumber:numberW...
//联系人:石虎  QQ:
昵称:嗡嘛呢叭咪哄
在我们平时工作中,经常会遇到把一些块状元素在一行排列显示,这时候我们通常会用到float,或许会用inline-b...
decimal 数据类型最多可存储 38 个数字,所有数字都能够放到小数点的右边。decimal 数据类型存储了一个准确(精确)的数字表达法;不存储值的近似值。定义 decimal 的列、变量和参数的...
一直很奇怪C#的预定义数据类型中为什么加了一个decimal,有float和double不就够了吗?今天来挖一挖。
Descriptio...
decimal(numeric )             同义,用于精确存储数值
float 和 real          &#160...
文档流:将窗体自上而下分成一行行, 并在每行中按从左至右的顺序排放元素,块状元素独占一行,内联元素不独占一行;
CSS中脱离文档流,也就是将元素从普通的布局排版中拿走,其他盒子在定位的时候,会当...
一直很奇怪C#的预定义数据类型中为什么加了一个decimal,有float和double不就够了吗?今天来挖一挖。浮点型   Name  CTS Type  Description  Signific...
转贴: /wang%5F6032/blog/item/c46e2bcefca351.html 一直很奇怪C#的预定义数据类型中为什么加了一个d...
decimal(numeric )             同义,用于精确存储数值
float 和 real          &#160...
他的最新文章
讲师:汪剑
讲师:刘道宽
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)主题 : CGFloat这些个基本数据类型需要释放吗?
级别: 侠客
可可豆: 521 CB
威望: 521 点
在线时间: 113(时)
发自: Web Page
CGFloat这些个基本数据类型需要释放吗?&&&
CGFloat/CGFloat*NSInteger/NSInteger*等等的这些表示数字的数据类型 需要内存释放吗?貌似没啥方法释放啊。。
级别: 圣骑士
可可豆: 4000 CB
威望: 4000 点
在线时间: 506(时)
发自: Web Page
这些都是是基本数据类型,不是类。你可以cmd+单击这个类型去看看定义。你只能给Objective-C对象发送释放消息,而非基本数据、结构体等
级别: 侠客
可可豆: 521 CB
威望: 521 点
在线时间: 113(时)
发自: Web Page
回 1楼(xinranmsndev) 的帖子
谢谢~~~~~~
级别: 圣骑士
可可豆: 3437 CB
威望: 3422 点
在线时间: 643(时)
发自: Web Page
如果是指针那就需要释放!!!
哥不说话,哥不想暴露哥那山区的浑厚重低音.哥不说话,哥用山寨iphone拍下哥凌乱沧凉的白发.哥不说话,哥轻轻抚摸着额头,怅然的回忆着哥5岁时那破碎的忧伤.哥不说话,哥只是用完美的角度翘起了嘴角.
级别: 侠客
可可豆: 521 CB
威望: 521 点
在线时间: 113(时)
发自: Web Page
回 3楼(kibernet) 的帖子
请问 如何释放。。。
级别: 新手上路
可可豆: 170 CB
威望: 170 点
在线时间: 6(时)
发自: Web Page
NSInteger是个基本数据类型,只是为了支持32位机器和64位机器的可移植性的考虑才这么写,当然不需要释放。#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64typedef long NSI#elsetypedef int NSI#endif但另外还有一个包装类NSNumber是一个类,经常用来把基本数据类型包装起来,存放在数组里时很有用,当然需要释放。
级别: 侠客
可可豆: 1375 CB
威望: 1265 点
在线时间: 822(时)
发自: Web Page
CGFloat&&NSInteger初始化时不加*,所以不用释放
关注本帖(如果有新回复会站内信通知您)
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 关注CVP公众号
扫一扫 浏览移动版iOS开发的一些奇巧淫技3
招聘信息:
CGfloat和float的区别?现在上架的app都要求支持64位系统,那么CGFloat和float的区别就在这里.command+左键点击CGFloat.typedef&CGFLOAT_TYPE&CGF这里可以看到CGFloat是CGFLOAT_TYPE的宏定义,那么这个又是什么?#if&defined(__LP64__)&&&&__LP64__
#&define&CGFLOAT_TYPE&double
#&define&CGFLOAT_IS_DOUBLE&1
#&define&CGFLOAT_MIN&DBL_MIN
#&define&CGFLOAT_MAX&DBL_MAX
#&define&CGFLOAT_TYPE&float
#&define&CGFLOAT_IS_DOUBLE&0
#&define&CGFLOAT_MIN&FLT_MIN
#&define&CGFLOAT_MAX&FLT_MAX
#endif这段话的意思就是,64位系统下,CGFLOAT是double类型,32位系统下是float类型.CGFloat能够保证你的代码在64位系统下也不容易出错,所以你的代码应该尽量使用CGFloat.尽管他可能造成一些多余的消耗.不过能保证安全.应该使用FOUNDATION_EXPORT还是#define来定义常量?一般iOS我们定义常量的方法有两种,来看下面例子我的.h文件FOUNDATION_EXPORT&NSString&*&const&kMyConstantS&&
FOUNDATION_EXPORT&NSString&*&const&kMyConstantString2;.m文件是这样定义的NSString&*&const&kMyConstantString&=&@"Hello";
NSString&*&const&kMyConstantString2&=&@"World";还有一种是常用的#define方法了#define&kMyConstantString&@"Hello"有什么区别呢?使用第一种方法在检测字符串的值是否相等的时候更快.对于第一种你可以直接使用(stringInstance == MyFirstConstant)来比较,而define则使用的是这种.([stringInstance isEqualToString:MyFirstConstant])哪个效率高,显而易见了.第一种直接比较的是指针地址,而第二个则是一一比较字符串的每一个字符是否相等.static inline function是干嘛的?如果你的.m文件需要频繁调用一个函数,可以用static inline来声明,这相当于把函数体当做一个大号的宏定义.不过这也不是百分之百有效,到底能不能把函数体转换为大号宏定义来用要看编译器心情,它要是觉得你的方法太复杂,他就不转了.他直接调用函数.类似这种简单函数他肯定是乐意的.static&inline&CGRect&ScaleRect(CGRect&rect,&float&n)这到底是什么鬼?static void *CapturingStillImageContext = &CapturingStillImageC这种声明方式常用于kvo,用来当做contenxt的key来添加.例如[self&addObserver:self&forKeyPath:@"stillImageOutput.capturingStillImage"&options:(NSKeyValueObservingOptionOld&|&NSKeyValueObservingOptionNew)&context:CapturingStillImageContext];这种声明方式可以导致a method to create a unique pointer at compile time.在编译的时候创建一个唯一的指针.因为kvo的时候context如果不小心重复了,会发生奇怪的事情.用这种方式可以避免.如何快速定位crash的位置?选择Add Exception Breakpoint这样如果你的app再crash就会自动定位到那句话.最快速的提升流畅度的方法?用instrument找出所有不需要透明但是透明的view,layer.全部弄成不透明的.选中Profile选中Color&Blended Layers选择我们最近风生水起的weibo客户端然后你会看见这些东西。红色或者深红色的就是透明的层和view,他们就是拖慢你fps的罪魁祸首,如果不需要透明的就改掉.一个神奇的工具,Accessorizer.到底叼不叼,看图就知道了.我安装的软件
微信扫一扫
订阅每日移动开发及APP推广热点资讯公众号:CocoaChina
您还没有登录!请或
点击量6581点击量5654点击量4721点击量4339点击量3227点击量2894点击量2753点击量2492点击量2422
&2016 Chukong Technologies,Inc.
京公网安备89iOS杂谈之------CGFloat、CGPoint、CGSize和CGRect区别
1、数据类型:
CGFloat: 浮点值的基本类型
CGPoint: 表示一个二维坐标系中的点
CGSize: 表示一个矩形的宽度和高度
CGRect: 表示一个矩形的位置和大小
typedef float CGF// 32-bit
typedef double CGF// 64-bit
struct CGPoint {
typedef struct CGPoint CGP
struct CGSize {
typedef struct CGSize CGS
struct CGRect {
typedef struct CGRect CGR
注意:CGRect数据结构的高度和宽度可以是负数。例如,一个矩形的原点是[0.0,0.0]和大小是[10.0,10.0]。这个矩形完全等同原点是[10.0,10.0]和大小是[-10.0,-10.0]的矩形。
2、使用值来创建几何元素的方法
CGPointMake
CGRectMake
CGSizeMake
CGPoint CGPointMake (
CGFloat x,
CGSize CGSizeMake (
CGFloat width,
CGFloat height
CGRect CGRectMake (
CGFloat x,
CGFloat y,
CGFloat width,
CGFloat height
CGFloat ten=10.0f;
CGPoint point = CGPointMake(0.0f, 0.0f);
CGSize size = CGSizeMake(10.0f, 10.0f);
CGRect rect = CGRectMake(point.x, point.y, size.width, size.height);
NSLog(@"ten: %f", ten);
NSLog(@"point: %@", NSStringFromCGPoint(point));
NSLog(@"size: %@", NSStringFromCGSize(size));
NSLog(@"rect: %@", NSStringFromCGRect(rect));
----------------------------------------------------------------------------------
每个视图都使用一个边框定义其界限。这个边框指定了视图的轮廓:其位置、宽度和高度。&
我们使用Core
Graphics结构宋定义边框矩形。对于边框,这通常表示由原点(CGPoint,x和y)和大小(CGsize,宽度和高度)组成的CGRect矩形。下面是这些类型的简要描述。&
&&&&1.CGRect&
&&&&CGRect结构在屏幕上定义了一个矩形。它包含原点(rect.origin)和大小(rect.size)。需要了解以下CGRect函数。&
&&&&·CGRectMake(origin.x,origin.y,size.width.
Size.height)在代码中定义矩形。&
&&&&·NSStringFromCGReot(someCGRect)把CGRect结构转变为格式化字符串。&
&&&&·CGRectFromString(aString)由字符串表示恢复出矩形。&
&&&&·CGRectlnset(aRect)用来创建较小或较大的矩形(中心点相同)。使用正的内嵌值表示较小的矩形,使用负的内嵌值表示较大的矩形。&
&&&&·CGRectIntersectsRect(rect
2)可以判断矩形结构是否交叉,两个矩形对象是否重叠。&
&&&&·CGRectZero是一个高度和宽度为零、位于(0,0)的矩形常量。需要创建边框但还不确定边框大小或位置时,可以使用此常量。&
&&&&2.CGPoint和CGSize&
&&&&前者通过x和y坐标定义,后者包括宽度和高度。使用CGPointMake(x,y)创建点。CGSize-
Make(width,height)创建大小。虽然这两个结构看上去相同(两个浮点值),但iPhoneSDK对二者有所区别。点表示位置值,大小表示程度值。不能将myFrame.origin设置为大小。&
&&&&与矩形相同,可以将它们与字符串进行相互转换,可用如下函数:NSStringFromCGPoint()、
NSStringPromCGgize()、CGSizeFromString()和CGPointFromString()。&
&&&&3.定义位置&
&&&&可以通过设置中心点(CGPoint)或边界(CGRect)定义视图的位置。与边框不同,视图的边界使用它自己的坐标系来反映视图的边框。在实际应用中,这表示边界的原点为(0.0,0.0),大小是它的宽度和高度。&
&&&&当希望移动视图或重新调整视图大小时,
可以更新其边框的原点、中心点或大小。不需要担心显示或隐藏的矩形部分。iPhone将负责完成重新绘图。这允许将视图作为切实的对象对待,并将呈现问题
委托给CocoaTouch。例如[myViewsetFrame:CGRectMake(0.of,50.Of.mywidth,
myheight)];。&
&&&&4.转换&
&&&&标准CoreGraphics调用会实时转换视图。举例来说,可以应用剪辑、旋转或其他平面几何效果。CocoaTouch支持一整套仿射转换(转换、旋转、缩放和倾斜等)。任何UIView子类的drawRect:方法都提供通过低级Core
Graphics调用进行绘图的入口点。&
&在调用Core
Graphics函数时,记住Quartz从左下方建立坐标系,而UIViews的原点位于左上方。&
&&&&&5.其他视图特征&
&&&&除了物理屏幕布局之外,还可以设置以下视图特征。&
&&&&·每个视图都有一个半透明要素(alpha),其值介于不透明和透明之间。可以通过[myView
&setAlpha:value]来调整它,其alpha值介于0.0(完全透明)和1.0(完全不透明)之间。&
&&&&·可以为视图背景指定一个颜色。[myView
setBackgroundColor:[UIColor
redColor])可将视图设置为红色。&
&&&&6.视图布局&
&&&&图2-2显示了普通iPhone应用程
序屏幕的布局。对于当前发布的iPhone,屏幕大小在纵向模式下为320X480,在横向模式下为480X320。无论使用横向还是纵向模式,位于屏幕
顶部的标准状态栏都占用20像素的高度。要查询状态栏边框,可以调用[[UIApplication sharedApplication]
statusBarPrame]。
&&&&如果更愿意释放这20像素的屏幕空间,则可以完全隐藏状态栏。使用此UIApplication调用:
[UIApplication sharedApplication]setStatusBarHidden:YES
animated:NO]。或者,在应用程序的Info.plist文件中将UIStatusBarHidden设置为。&
&&&&要仅在横向模式下运行应用程序,可以将状态栏方向设置为横向。如果计划隐藏状态栏,也应执行此操作(即[[UIApptication
sharedApplication] setStatusBarOrientation:
UIInEerfaceOrientationLandscapeRight])。这将强制窗口并排显示井生成正确的横向键盘。&
&&&&UIScreen对象代表iPhone的物理屏幕([UIScreen
malnScreen])。此屏幕对象建立视图布局边界与像素空间之间的映射。它返回全屏大小(bounds)或只是应用程序占用的矩形(applicationFrame)。后面会考虑状态栏以及任何工具栏/导航栏(如果已使用)的大小。&
&&&&默认情况下,UINavigationBar、UIToolbar和UITabBar对象的高度均为44像素。使用这些数字计算iPhone屏幕上的可用空间,在未使用Interface
Builder的布局工具时对应用程序进行布局
&CGRect 函数
1.CGRectOffset使用从源CGRect偏移的原点来创建矩形
&&&&&&&&float
offset = 25.0;
&&&&CGRect
r1 = CGRectMake(100, 100, 100, 100);
&&&&CGRect
r2 = CGRectOffset(r1, offset, offset);
2.CGRectIntersectsRect允许我们确定两个矩形是否相交
offset = 25.0;
&&&&CGRect
r1 = CGRectMake(100, 100, 100, 100);
&&&&CGRect
r2 = CGRectMake(150, 150, 100, 100);
(CGRectIntersectsRect(r1, r2))
&&&&&&&&NSLog(@"intersecting");
3.NSStringFromCGRect可以用来把CGRect显示到控制台
&&&&CGRect
r1 = CGRectMake(100, 100, 100, 100);
&&&&NSLog(@"rect:@%",NSStringFromCGRect(r1));&&&&
同样,CGRectFromString允许我们根据一个字符串创建一个CGRect:
&&&&NSString
*r = @"{0,0},{100,100}";
&&&&CGRect
r1 = CGRectFromString(r);
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。}

我要回帖

更多关于 ios 弧度的正负 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信