`
bengan
  • 浏览: 201758 次
  • 性别: 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的布局工具时对应用程序进行布局。
分享到:
评论

相关推荐

    CGRect_UIEdgeInsets

    在iOS开发中,`CGRect`和`UIEdgeInsets`是两个非常重要的基础概念,尤其是在处理视图(UIView)的布局和定位时。它们都是苹果的Foundation框架和UIKit框架中的核心数据结构,对于创建用户界面有着至关重要的作用。 ...

    ios开发笔记

    9. frame和bounds的区别: - frame:一个UIView的frame表示其在父视图坐标系中的位置和大小。改变frame会影响视图在屏幕上的显示位置。 - bounds:bounds表示视图自身的坐标系中的位置和大小,通常以(0, 0)为原点...

    SwiftCGRectExtensions.zip

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

    iphone 开发简单介绍ppt

    通过上述内容的学习,我们了解到在iPhone开发过程中,`UIScreen`、`CGRect`、`CGPoint`和`CGSize`这几个类或结构体的重要性。它们不仅能够帮助我们更好地理解设备的基本信息,还能够指导我们在开发过程中做出正确的...

    iPhone坐标系统

    CGRect则是用来表示一个矩形区域,它由origin(表示矩形左上角的点)和size(表示矩形的宽度和高度)两个CGPoint和CGSize组成。 在代码中创建这些结构的实例时,通常使用的是宏定义函数,比如CGPointMake(x, y)用于...

    iphone CGPointUtils

    - `CGPointIsInRange(CGPoint point, CGRect range)`:检查一个点是否位于指定矩形范围内。 - `CGPointRelativeToCenter(CGPoint point, CGPoint center)`:获取点相对于中心点的位置,返回一个新的坐标。 - `...

    OC常用结构体

    `NSRect`和`CGRect`在界面布局和绘图中不可或缺。 ```objc NSRect rect = NSMakeRect(10.0, 20.0, 300.0, 400.0); // 创建一个左上角在(10.0, 20.0),宽高为300x400的矩形 CGRect cgRect = CGRectMake(50.0, 60.0, ...

    水印图片文字简单使用

    logo.draw(in: CGRect(origin: CGPoint.zero, size: CGSize(width: logoSize, height: logoSize))) context.restoreGState() let newImage = UIGraphicsGetImageFromCurrentImageContext() ...

    构建TableView1

    CGPoint、CGRect和CGSize结构体用于定义位置和大小。例如,UIView的frame属性包含了它的位置(CGPoint)和大小(CGSize),而contentOffset则表示滚动时视图相对于其内容的位置。 构建TableView涉及几个关键对象: ...

    不规则按钮

    path.addQuadCurve(to: CGPoint(x: bounds.maxX, y: bounds.midY), controlPoint: CGPoint(x: bounds.midX, y: bounds.minY * 0.5)) path.addLine(to: CGPoint(x: bounds.maxX, y: bounds.maxY)) path.addQuadCurve...

    iOS项目开发知识点总结

    #### 三、CGPoint和CGSize - **创建一个CGPoint**: ```objective-c CGPoint point = CGPointMake(x, y); ``` - **创建一个CGSize**: ```objective-c CGSize size = CGSizeMake(width, height); ``` 这些...

    ios 画图,绘制坐标系,画坐标系

    override func drawRect(rect: CGRect) { let context = UIGraphicsGetCurrentContext() // 绘制代码将放在这里 } ``` 2. **设置坐标系统**: 使用`CGContextTranslateCTM`和`CGContextScaleCTM`方法调整坐标系的...

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

    - 创建 `CGPoint` 和 `CGSize` 可以使用 `CGPointMake` 和 `CGSizeMake` 方法。 ```objective-c CGPoint point = CGPointMake(x, y); CGSize size = CGSizeMake(width, height); ``` ##### 4. **视图属性设置...

    swift-流水UI布局随性所欲定制UI流和事件流

    override func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint, withScrollingVelocity velocity: CGPoint) -&gt; CGPoint { // 调整滚动时的目标偏移量,确保元素对齐 } } ``` 2. ...

    UIBezierPath

    - 添加三次贝塞尔曲线:`path.addCurve(to: CGPoint(x: 200, y: 200), controlPoint1: CGPoint(x: 150, y: 100), controlPoint2: CGPoint(x: 150, y: 200))` ### 4. 封闭路径 如果需要绘制封闭的形状,如矩形或...

    ios-渐变色label.zip

    开发者通过这个实践可以学习到如何自定义UI组件,增强其功能性和美观性。 首先,我们了解Swift中的UILabel。UILabel是iOS SDK中用于显示单行或多行文本的视图。默认情况下,它支持简单的文本样式,如字体、颜色和...

    ios-贝塞尔曲线控制点获取.zip

    override func draw(_ rect: CGRect) { guard let context = UIGraphicsGetCurrentContext() else { return } // 起点 let start = CGPoint(x: 50, y: 50) // 控制点1 let control1 = CGPoint(x: 150, y: ...

    swift-iOS动画-几种特殊的layer动画

    keyframeAnimation.values = [CGPoint(x: 0, y: 0), CGPoint(x: 100, y: 0), CGPoint(x: 100, y: 100)] keyframeAnimation.keyTimes = [0, 0.5, 1] keyframeAnimation.duration = 2.0 layer.add(keyframeAnimation, ...

Global site tag (gtag.js) - Google Analytics