1. 在Editor中最后一项hiddeninvisibles可以关闭Xcode中的空格显示符号特殊︼.
2. 隐藏系统状态栏让app启动时图片全屏进入程序后显示状态栏方法.
a) 在<APP>-info.list文件中,加上“Status baris initially hidden”选项,选择yes
b) 在程序里面添加[[UIApplicationsharedApplication]setStatusBarHidden:NOwithAnimation:UIStatusBarAnimationNone];即可
3. NSUserDefaults可以存取一些短小的信息,保存是长期性的(下次启动数据还存在),调用synchronsize方法是强制让NSUserDefaults保存.
4. 在project-Buildsettings中找到 “RunStatic Analyzer”键,然后把值修改为“YES”.这样在编码的时候,xcode就可以自动为我们检查内存泄露。一般的在装Xcode的时候会自带Instruments内存检测工具,如果没有也不用担心,可以从其他人电脑上拷贝Instruments.app,在Dock上右键showin Finder找到,拷贝到自己电脑相应文件夹后双击,就可以用了。
5. ipad设备的大小是1024*768(去掉状态栏)。
6. 按钮设置_前景图时,按钮的大小与图片大小一致。
7. 动画块执行的原理应该是一个分线程
8. 在入口类里,让设备旋转的方法不会调用,[[UIApplicationsharedApplication]setStatusBarOrientation: UIDeviceOrientationLandscapeLeft];
只是让设备旋转,并不能让其内容旋转。所以在入口类里添加一个图片的话,他不会跟着设备旋转。在入口类里让设备旋转后,还应该让每个试图控制器也旋转一下。保证加载每个视图控制器的视图都是与设备旋转的方向一致。
9. 想让一个view放到视图的最上面一层,可以用[self.viewbringSubviewToFront:(UIView*)view];。uiview上添加的多个视图都有一个索引,按照添加的顺序有一个索引(从0开始)。视图上添加的视图其实是一个数组,
10. NSArray *viewarr=self.view.subviews;找到所有的子视图
for(UIView *vi inviewarr)
{//遍历数组
if (vi==btn1)
{//判断指针是不是指向咱们要找的那个视图
int index=[viewarrindexOfObject:btn1];//根据这个视图找到他在这个父视图上的索引
NSLog(@"%d",index);
UIButton*btnselect=(UIButton *)vi;
[btnselectsetTitle:@"111"forState:UIControlStateNormal];
}}
11. 按钮上有图片时,要把图片的可交互性设为不可交互。
12. iPad的键盘高度是350,动画时间0.3
13. 父视图不可交互时,子视图也不可交互。
14. 导航器只有压栈后才会传值。
15. 继承父类时,xib文件里面的视图不会直接显示,要加载父类的xib文件(创建视图控制器的时候加载xib时绑定父类的xib),用代码写的可以直接继承。
16. 用动画块的时候,要记着把动画块结束掉,否则后面的代码也会执行动画。
17. 在越狱手机上调试安装的方法:
建一个Payload目录,把.app拷进去,然后压缩这个目录,把.zip改成.ipa就能在越狱的机器上安装
还有就是把targer里的.app拖到itunes里,再从itunes里拖到桌面也可以打包成ipa
1.设置tableview的背景图片
self.tableView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background"]];
2.设置cell透明度
cell.backgroundColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:0.3];
[window endediting Yes];//让window上的所有控件结束编辑//只能用加载到的对象调用,并且作用范围也是调用者的自身。
//alpha 等于零的时候不接收事件
父类的所有属性,子类也都有拥有,包括父视图和子视图。
错误:base sdk missing 解决办法如下
1.需要在工程文件的bulid 选项卡中 ,base sdk 一栏改为你本机的开发sdk。
2.在target 里面,做同样的操作。
3.如果还是base sdk missing ,关闭项目,重新打开即可
错误:OBJC_CLASS_$ 出现
说明控制台错误消息中指出的类,没有被包含在target 里面的compile source 中
高版本在新建window based的时候没有自动生成xib,需要自己重新建xib.
//视图创建
拖拽控件
代码法
混合法
build中
Base SDK自己Xcode 上支持的最高版本
iosDeployment Target ios 4.2指示安装此程序的手机的系统最少是4.2以上的
window 不接受事件,不能在window上点击退去键盘事件
程序首先加载XIB中的控件,让后才到入口类,执行代码。
\t相当于两个tab键值,即四个空格.
[selfsetClipsToBounds:YES];//在设置过圆角后,使超出父视图的部分不显示.
[self.layersetCornerRadius:200.0f];//设置角半径,即在view的角处以10.0f为半径做弧,还需导入QuartzCore.framework类库即头文件#import <QuartzCore/QuartzCore.h>
IBOutlet不执行任何操作,它的唯一作用是告诉Interface Builder,此实例变量将被连接到nib中的对象。你创建的任何需要连接到nib文件中的对象的实例变量都必须以IBOutlet关键字开头。只有当一个ViewController被载入处于活动状态的时候,这个ViewController中的IBOutlet变量才能正常使用,否则都会因为不在作用范围内而无法正常使用的.
IBAction
操作是控制器类中的方法。它们也是通过特殊关键字IBAction声明的,该关键字告诉Interface Builder,此方法是一个操作,且可以被某个控件触发
在iphone中,只要控件使用IBOutlet连接,则必须释放它。无论它是否有@protety (retain)属性。
在mac os 中,如果控件使用IBOutlet连接,而无@property(retain)属性,则在dealloc不需要release。如果有retain属性,则需要释放
默认,所有iOS设备在过了设定的休眠时间后,都会自动锁屏。如果你的应用不希望iOS设备自动锁屏,可以使用以下方式来保持屏幕一直开着。
高版本在新建window based的时候没有自动生成xib,需要自己重新建xib.
//视图创建
拖拽控件
代码法
混合法
build中
Base SDK自己Xcode 上支持的最高版本
iosDeployment Target ios 4.2指示安装此程序的手机的系统最少是4.2以上的
window 不接受事件,不能在window上点击退去键盘事件
程序首先加载XIB中的控件,让后才到入口类,执行代码。
\t相当于两个tab键值,即四个空格.
[selfsetClipsToBounds:YES];//在设置过圆角后,使超出父视图的部分不显示.
[self.layersetCornerRadius:200.0f];//设置角半径,即在view的角处以10.0f为半径做弧,还需导入QuartzCore.framework类库即头文件#import <QuartzCore/QuartzCore.h>
IBOutlet不执行任何操作,它的唯一作用是告诉Interface Builder,此实例变量将被连接到nib中的对象。你创建的任何需要连接到nib文件中的对象的实例变量都必须以IBOutlet关键字开头。只有当一个ViewController被载入处于活动状态的时候,这个ViewController中的IBOutlet变量才能正常使用,否则都会因为不在作用范围内而无法正常使用的.
IBAction
操作是控制器类中的方法。它们也是通过特殊关键字IBAction声明的,该关键字告诉Interface Builder,此方法是一个操作,且可以被某个控件触发
在iphone中,只要控件使用IBOutlet连接,则必须释放它。无论它是否有@protety (retain)属性。
在mac os 中,如果控件使用IBOutlet连接,而无@property(retain)属性,则在dealloc不需要release。如果有retain属性,则需要释放
默认,所有iOS设备在过了设定的休眠时间后,都会自动锁屏。如果你的应用不希望iOS设备自动锁屏,可以使用以下方式来保持屏幕一直开着。
/ /Disable the idle timer
[[UIApplication sharedApplication] setIdleTimerDisabled: YES];
// Or for those who prefer dot syntax:
[UIApplication sharedApplication].idleTimerDisabled = YES;