`
bengan
  • 浏览: 199411 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

cgrect和cgpoint的区别

阅读更多
每个视图都使用一个边框定义其界限。这个边框指定了视图的轮廓:其位置、宽度和高度。

我们使用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 1.feet 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设置为<true/>。

    要仅在横向模式下运行应用程序,可以将状态栏方向设置为横向。如果计划隐藏状态栏,也应执行此操作(即[[UIApptication sharedApplication] setStatusBarOrientation: UIInEerfaceOrientationLandscapeRight])。这将强制窗口并排显示井生成正确的横向键盘。

    UIScreen对象代表iPhone的物理屏幕([UIScreen malnScreen])。此屏幕对象建立视图布局边界与像素空间之间的映射。它返回全屏大小(bounds)或只是应用程序占用的矩形(applicationFrame)。后面会考虑状态栏以及任何工具栏/导航栏(如果已使用)的大小。

    默认情况下,UINavigationBar、UIToolbar和UITabBar对象的高度均为44像素。使用这些数字计算iPhone屏幕上的可用空间,在未使用Interface Builder的布局工具时对应用程序进行布局。
分享到:
评论

相关推荐

    SwiftCGRectExtensions.zip

    SwiftCGRectExtensions 是 CGRect, CGPoint 和 CGSize 简便函数的集合,使用 Swift 编写,支持 iOS 和 OS X。 SwiftCGRectExtensions 目标是为普遍使用的 rect 操作提供清晰的函数。 特性 Operators for adding, ...

    iphone开发笔记

    退回输入键盘 2 CGRect 2 CGPoint & CGSize 3 设置透明度 3 设置背景色 3 自定义颜色 3 竖屏 3 横屏 3 ...iPhone里的frame和bounds区别 43 Objective-C内存管理 44 iphone更改键盘右下角按键的type 45

    苹果ios开发一年的工作笔记

    苹果ios开发一年的工作笔记 退回输入键盘 ...CGRectZero 高度和宽度为零的/位于(0,0)的矩形常量 CGPoint & CGSize CGPoint aPoint = CGPointMake(x, y); CGSize aSize = CGSizeMake(width, height);

    iOS-UI控件常见属性总结

    @property(nonatomic) CGPoint center; // 形变属性:旋转、缩放、平移 @property(nonatomic) CGAffineTransform transform; // 父控件 @property(nonatomic,readonly) UIView *superview; // 所有的子控件 @...

    iOS学习教程之UIView中坐标转换详解

    在开发中我们经常会需要判断两个控件是否包含重叠,此时如果控件A和B的坐标原点如果不确定的话,那么肯定会导致比较不正确发生错误 判断包含重叠的代码如下: CGRectContainsRect(&lt;#CGRect rect1#&gt;, &lt;#...

    fuzzy-octo-archer:带有OpenCV实现的iOS应用程序排序

    CGRect范围; BOOL hasLeftEyePosition; CGPoint leftEyePosition; CGPoint rightEyePosition; BOOL hasMouthPosition; CGPoint rightPosition; BOOL hasTrackingID; int trackingID; BOOL hasTrackingFrameCount; ...

    OC常用结构体

    四个常用的OC结构体: NSRange(location length) NSPoint\CGPoint NSSize\CGSize NSRect\CGRect (CGPint CGSize)

    ZXQuartz:ZXQuartz 感觉好用就给打个星哦~

    推荐此的轻型键值数据库 ZX石英 画图 将UIVIew转换为UIImage //矩形 -( void )drawRectangle:( CGRect )...-( void )drawCircleWithCenter:( CGPoint )center radius:( float )radius; //曲线 -( void )drawCurveFr

    Spline:Swift中的视觉样条线编辑器

    用法 Interface builder -add a custom SplineView and use inspectable properties to edit -edit "points" properties to place spline control points Programmatically var points = [CGPoint]() ... points....

    Motion:动画引擎,用于手势驱动的用户界面,动画以及iOS,macOS和tvOS上的交互

    Motion是一个动画引擎,用于在iOS,macOS和tvOS上以手势驱动的用户界面,动画... 默认情况下,开箱即用地支持许多类型,包括: Float Double CGFloat CGPoint CGSize CGRect SIMD2&lt;Float&gt; SIMD2&lt;Double&gt; … 还有很多。

    进阶:适用于iOS,tvOS和macOS的基于物理的动画

    适用于iOS,tvOS和macOS的动画库,该库使用基于物理的动画(包括弹簧)来增强可真实移动和响应的交互。 let view = UIView ( frame : CGRect ( x : 0 , y : 0 , width : 100 , height : 100 )) // Springs animate ...

    IOS 中CALayer绘制图片的实例详解

    IOS 中CALayer绘制图片的实例详解 CALayer渲染内容图层。与UIImageView相比,不...CGPoint position = CGPointMake(160.0, 200.0); CGRect bounds = CGRectMake(0.0, 0.0, 150.0, 150.0); CGFloat cornerRadius = 150.0

    一款显示操作提示的控制器

    [self.tableView setContentOffset:(CGPoint) { self.tableView.contentOffset.x, self.tableView.contentSize.height-self.tableView.frame.size.height } animated:YES]; } waitsForTouch:YES];

    iOS快速实现环形渐变进度条

    - (void)drawRect:(CGRect)rect { CGContextRef ctx = UIGraphicsGetCurrentContext();//获取上下文 CGPoint center = CGPointMake(100, 100); //设置圆心位置 CGFloat radius = 90; //设置半径 CG

    bezierpath-length:使用Swift编写的简单API,用于获取CGPath,UIBezierPath或NSBezierPath的长度

    let rect = CGRect ( origin : . zero , size : CGSize ( width : 100 , height : 300 )) let path = UIBezierPath ( ovalIn : rect) // Length in pt. let length = path. length 还有一个API,用于以一定百分比...

    XWDatabase - 市面上最易用的数据库工具类

    float,double,NSInteger,CGFloat,BOOL,NSString,NSMutableString,NSNumber,NSArray,NSMutableArray,NSDictionary,NSMutableDictionary,NSData,NSMutableData,UIImage,NSDate,NSURL,NSRange,CGRect,CGSize,CGPoint,...

    SYNUtils:实用程序方法,polyfills和运算符可简化Swift中的常见任务

    Float,Double) abs acos asin atan atan2 cos sin tan exp exp2 lerp log log10 log2 pow sqrt floor ceil round clamp大批 each contains some every chooseRandom pop shift unshift fill CGPoint 为两个点和带...

    ios-新版swift 4.0 自定义pageControl 空心点、方点、椭圆、图片等.zip

    pageControl3.frame = CGRect.init(x: left, y: scrollView3.frame.maxY, width: width, height: 20) pageControl3.numberOfPages = pageCount//总页数 pageControl3.isSquare = true//设置为方型点 pageControl...

    iOS利用UIBezierPath + CAAnimation实现路径动画效果

    前言 上次给大家介绍了iOS利用UIBezierPath + CAAnimation实现路径动画效果的相关内容,今天实现一个根据心跳路径实现一个路径动画,让某一视图沿着路径进行运动.... CGPoint startPoint = CGPointMake(rect

    ios开发记录

    CGRect rect = screen.bounds; //判断btn这个指针指向的是UIButton的对象的时候才清空 if([btn isKindOfClass:[UIButton class]]){ [btn removeFromSuperview]; } //判断这个视图是否是他的父视图有 if([_...

Global site tag (gtag.js) - Google Analytics