ios 界面开发中的常见元素

界面开发中的 CGPoint、CGSize、CGRect、CGRectMake、window(窗口)、视图(view)简单记录

  • 定义
/* Points. */  

struct CGPoint {
  CGFloat x;
  CGFloat y;
};
typedef struct CGPoint CGPoint;  
/* Sizes. */  

struct CGSize {
  CGFloat width;
  CGFloat height;
};
typedef struct CGSize CGSize;  
/* Rectangles. */  

struct CGRect {
  CGPoint origin;//偏移是相对父窗口的
  CGSize size;
};
typedef struct CGRect CGRect;  
  • 常用的函数

CGPoint CGPointMake ( CGFloat x, CGFloat y );

CGRect CGRectMake ( CGFloat x, CGFloat y, CGFloat width, CGFloat height );

定好origin(起点,左上角),宽与高,就可以画出一个位置与大小确定的rect(矩形)这个函数被声明为内联函数

CGSize CGSizeMake ( CGFloat width, CGFloat height );

CGrect screenBounds = [ [UIScreen mainScreen]bounds];//返回的是带有状态栏的Rect
CGRect viewBounds = [ [UIScreen mainScreen]applicationFrame];//不包含状态栏的Rect  

CGRectlnset(aRect)用来创建较小或较大的矩形(中心点相同)。使用正的内嵌值表示较小的矩形,使用负的内嵌值表示较大的矩形。

CGRectIntersectsRect(rect 1.feet 2)可以判断矩形结构是否交叉,两个矩形对象是否重叠。

CGRectZero是一个高度和宽度为零、位于(0,0)的矩形常量。需要创建边框但还不确定边框大小或位置时,可以使用此常量。

CGRectOffset使用从源CGRect偏移的原点来创建矩形

float offset = 25.0;
CGRect r1 = CGRectMake(100, 100, 100, 100);
CGRect r2 = CGRectOffset(r1, offset, offset);

CGRectIntersectsRect允许我们确定两个矩形是否相交

    float offset = 25.0;
    CGRect r1 = CGRectMake(100, 100, 100, 100);
    CGRect r2 = CGRectMake(150, 150, 100, 100);
    if (CGRectIntersectsRect(r1, r2))
    {
        NSLog(@"intersecting");
    }

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);

View

UIView* myView =[[ UIView alloc]initWithFrame:CGRectMake(0.0,0.0,200.0,400.0)];
//这里创建了一块画布,定义了相对于父窗口的位置, 以及大小。
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
self.window.backgroundColor = [UIColor grayColor];
//给window设置一个背景色  
  • 转换

标准CoreGraphics调用会实时转换视图。举例来说,可以应用剪辑、旋转或其他平面几何效果。CocoaTouch支持一整套仿射转换(转换、旋转、缩放和倾斜等)。任何UIView子类的drawRect:方法都提供通过低级Core Graphics调用进行绘图的入口点。

说明  在调用Core Graphics函数时,记住Quartz从左下方建立坐标系,而UIViews的原点位于左上方。

每个视图都有一个半透明要素(alpha),其值介于不透明和透明之间。可以通过[myView  setAlpha:value]来调整它,其alpha值介于0.0(完全透明)和1.0(完全不透明)之间。

可以为视图背景指定一个颜色。[myView setBackgroundColor:[UIColor redColor])可将视图设置为红色。

  • 状态栏

无论使用横向还是纵向模式,位于屏幕顶部的标准状态栏都占用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的布局工具时对应用程序进行布局

时间: 2025-01-14 09:44:17

ios 界面开发中的常见元素的相关文章

WWDC 2014 Session笔记 - iOS界面开发的大一统

本文是我的 WWDC 2014 笔记 中的一篇,涉及的 Session 有 What's New in Cocoa Touch Building Adaptive Apps with UIKit What's New in Interface Builder View Controller Advancements in iOS 8 A Look Inside Presentation Controllers iOS 8 和 OS X 10.10 中一个被强调了多次的主题就是大一统,Apple

WEB开发中一些常见的攻击方式及简单的防御方法

WEB开发中一些常见的攻击方式及简单的防御方法 20151127 转载http://www.lvtao.net/dev/582.html SQL注入最常见的攻击方式,所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击. 跨站脚本攻击(XSS)跨站脚本攻击(也称为XSS)指利用网站漏洞从用户那里恶意盗取

iOS项目开发中的知识点与问题收集整理(Part 一)

前言部分 注:本文并非绝对原创 大部分内容摘自 http://blog.csdn.net/hengshujiyi/article/details/20943045 文中有些方法可能已过时并不适用于现在的开发环境. 1.Search Bar 怎样去掉背景的颜色(storyboard里只能设置background颜色,可是发现clear Color无法使用). 其实在代码里还是可以设置的,那就是删除背景view  [[self.searchBar.subviews objectAtIndex:0]

iOS项目开发中的知识点与问题收集整理

注:本文并非绝对原创 大部分内容摘自 http://blog.csdn.net/hengshujiyi/article/details/20943045 文中有些方法可能已过时并不适用于现在的开发环境. 1,Search Bar 怎样去掉背景的颜色(storyboard里只能设置background颜色,可是发现clear Color无法使用). 其实在代码里还是可以设置的,那就是删除背景view  [[self.searchBar.subviews objectAtIndex:0] remov

学习方法和阶段介绍 、 iOS界面开发引入 、 构造第一个App 、 视图控制器和视图 、 控件与事件 、 InterfaceBuilder

1 创建并运行第一个App 1.1 问题 使用Xcode创建一个App项目,该应用实现功能在界面上显示Hello World标签,在模拟器中的运行结果如图-1所示: 图-1 1.2 方案 分析图-1,首先使用Xcode创建一个Single ViewApplicaton应用,起名为MyFirstApp,如图-2所示: 图-2 然后删除Xcode的导航栏里只保留TRAppDelegate.h文件和TRAppDelageat.m文件,其他代码文件.storyboard文件以及xib文件删除,如图-3所

IOS界面开发基础——Frame与Bounds

参考资料:http://blog.csdn.net/hherima/article/details/39501857 在IOS的UI开发中,经常需要对view进行定位.比较常用的概念就是Frame和Bound,通过view这两个属性,就可以任意的"摆弄"我们的view了. 这两个属性都可以定义view的位置和大小,但这两个属性之间有什么区别和联系呢?经过资料查找,记录如下: Frame与Bounds的基本概念 首先,Frame与Bounds都是一个CGRect结构: struct CG

前端开发中最常见的12个HTML标签错误(其实也不一定就错,只是这样写不太好)

开发者在写HTML代码的时候一定要仔细,并熟练掌握HTML规则,因为一不留神则可能出现一些微小的错误,但有可能会导致严重的后果. http://www.iteye.com/news/26074本文列举了一些在HTML中常见的错误,并且给出了如何避免错误的方法.相信这些方法会对前端开发者有一些帮助. 错误1:嵌套错误 正确使用HTML tag的结束标记非常重要,HTML tag的结束标记的顺序要和开始标记一致,而新手往往会忽视这点.如果顺序不对,系统会出现验证错误并且得不到预期的结果.因此,要注意

Hybrid App Development: 二、关于造轮子以及在Xcode iOS应用开发中加入Cordova

转载请注明出处:http://www.cnblogs.com/xdxer/p/4111552.html [ctrl+左键点击图片可以查看原图] 在上一篇关于Hybrid App Development的文章中,我讨论了一下在iOS下UIWebView的使用方法.但是光使用一个UIWebView所提供的功能还是完全不能满足我们的需求.   关于造轮子的思考: 在UIKit中的UIWebView虽然已经提供了很多功能了,比如JavaScript和Objc之间的通信.但是考虑到一个问题,如果在Hybr

ios之开发人员须知常见简写英文代表的含义

<span style="white-space:pre"> </span> //NS基本 //MK地图 //CG图形绘制 //AV视音频 //UI视图 //ARC iOS4.2 自动内存管理机制简化内存管理 // iOS iOS(原名:iPhone OS)是由苹果公司为移动设备所开发的操作系统 // OS X 苹果PC非移动设备操作系统的最新版本 // MAC 苹果公司所推出的个人电脑,简称 Mac. // MVC 模型控制器模式 MVC模式(Model-Vi