ios随笔

1.编写IOS应用程序有何不同
      1)只有一个应用程序正在运行
      2)只有一个窗口
      3)受限访问
      4)有限的访问时间
      5)有限的屏幕大小
      6)有限的系统资源
      7)不支持垃圾收集
      8)新功能 :定位方法 内置照相机和图片库 内置加速计
      9)与众不同的方法
2.nib文件的构成
          1)File‘s Owner 它表示从磁盘加载nib文件的对象
          2)First Responder 第一响应者就是用户当前正在与之交互的对象
          3)UIview对象是用户可以看到并能与之交互的的区域
3.MVC模型将所有功能划分成三种
    1)模型。保存应用程序数据的类
    2)视图。窗口、控件和其他用户可以看到并能与之交互的元素
    3)控制器。将试图和模型绑定在一起
       在iPhone程序开发中,所有的控件、窗口等都继承自 UIView,对应MVC中的V。UIView及其子类主要负责UI的实现,而UIView所产生的事件都可以采用委托的方式,交给UIViewController实现。对于不同的UIView,有相应的UIViewController,对应MVC中的C。例如在iOS上常用的UITableView,它所对应的Controller就是UITableViewController。至于MVC中的M,就需要用户根据自己的需求来实现了。
iOS的sdk中已经为我们提供了许多视图组件:例如:UIView,UIViewController。这也方便开发者进行开发。同时,也对数据模型中可能使用到的一些组件进行了封装:数据库、CoreDta等,这有利于开发者迅速的建立一个基于MVC设计模式的程序。
    4)IBOutlet作用是告诉Interface Builder此实例变量被连接到nib中的对象。创建任何
关于需要连接到nib文件的对象的实例变量都必须以IBOutlet关键字开头。
5)操作是控制器类中的方法。通过关键字IBAction声明。
-(IBAction)dosomething:(id)sender;
6)每个iPhone应用程序都有一个且仅有一个UIApplication实例,负责应用程序的运行以及处理各种营运程序级功能,如将输入发送给合适的控制器类。
7)@property(retain,nonatomic) IBOutlet UILabel *statusText;中属性retain通知编译器向分配给此属性的对象发送一个保留信息,确保实例变量在使用过程中不会从内存中清除。 属性nonatomic将更改访问方法和修改方法的生成方式,默认情况下,这些方法在创建时会具备另外一些代码,用于帮助你编写多线程程序。
8)@synthesize statusText;作用是通知编译器自动为我们创建访问方法和修改方法。
9)通过sender获取被按下按钮的标题
     NSString *title = [sender titleForState:UIControlStateNormal];
10)在AppDelegate.m文件中  -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{};该方法将在应用程序完成所有设置任务。并准备好开始与用户交互式触发。它的委托版本将试图控制器的视图作为子视图添加到应用程序的主窗口中,并将窗口设置为可见。
11)隐藏键盘:取消第一响应者状态
-(IBAction)textfieldDoneEditiog:(id)sender
 {
    [sender resignFirstResponder];
 }
xib中Did End On Exit连接到File‘s Owner
12)通过触摸背景关闭键盘
-(IBAction)backgroundTap:(id)sender
 {
    [nanmeField resignFirstResponder];
          [numberField resignFirstResponder];

}
xib中把class的UIview改为UIControl,从Touch Down连接到File’s Owuer。
13)通过touch事件关闭键盘
          - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
          {
    UITouch *touch = [[event allTouches] anyObject];
    if (touch.tapCount >= 1)
    {
        [self.hostTextField resignFirstResponder];
        [self.portTextField resignFirstResponder];
        [self.myNameTextField resignFirstResponder];
        [self.passwordTextField resignFirstResponder];
    }
}
4.多视图
1)所有多视图应用程序都使用UIKit提供的特定控制器类。标签栏界面是使用UITabBarController类来实现的,而导航栏界面是使用UINavigationController实现的。
2)在多视图应用程序中,根控制器的任务是获取两个或更多其他视图并根据用户输入向用户提供适当的视图。
5.选取器(Pickers)
1)五种选取器:日期选取器、单组件选取器、多组件选取器、依赖组件选取器、利用图像自定义选取器。
2)委托(picker)、数据源(picher data source)
选取器要求委托在特定的组件上的特定位置绘制一个字符串或一个视图。
选取器通过数据源获知组件和每个组件中的行数。

6. 定义按钮
UIButton *scaleUpButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[scaleUpButton setTitle:@"放 大" forState:UIControlStateNormal];
scaleUpButton.frame = CGRectMake(40, 420, 100, 40);
[scaleUpButton addTarget:self
 action:@selector(scaleUp)
forControlEvents:UIControlEventTouchUpInside];
 
7.设置视图背景图片
UIImageView *aView;
[aView setImage:[UIImage imageNamed:@”name.png”]];
view1.backgroundColor = [UIColor colorWithPatternImage:
[UIImage imageNamed:@"image1.png"]];

8.给cell加箭头
           cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    cell选中无颜色提示 [cell     setSelectionStyle:UITableViewCellSelectionStyleNone];
    cell不可选 cell.userInteractionEnabled = NO;
9.NavigationController的使用
1)返回按钮
定制返回按钮的标题还有事件的话,可以用以下代码。
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:@"Back"
      style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.backBarButtonItem = backButton;
[backButton release];
注意,这里的self是第一级的view controller。这样的话第二级的页面将显示“Back”。
2)左右按钮
navigation item还有两个属性leftBarButtonItem rightBarButtonItem。NSL
一般leftBarButtonItem只出现在RootviewController中使用,因为其他页面一般都显示一个返回按钮。
UIBarButtonItem *settingsButton = [[UIBarButtonItem alloc] initWithTitle:@"Settings"
      style:UIBarButtonItemStylePlain target:self action:@selector(handleSettings)];
self.navigationItem.rightBarButtonItem = settingsButton;
[settingsButton release];
这会在右侧添加一个“Setting”的按钮,并触发handleSetting事件。

__FUNCTION__
    打印当前函数的名字
    NSlog(@”%@”,__FUNCTION__);
11.Nsstring中的数据按“,”分开
    NSString *string = [[NSString alloc] initWithString:@"One,Two,Three,Four"];
         NSLog(@"string:%@",string);    
          NSArray *array = [string componentsSeparatedByString:@","];
12.NSDate时区设置
    [dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]];
13.查找数组中元素位置
    [array indexOfObject:str]

14.旋转
    CGAffineTransform rotation = CGAffineTransformMakeRotation(M_PI_2);
    [xxx setTransform:rotation];

15.圆角
    //假设我的这个UIImageView 叫userHeadimgV; 
    //开始画圆角吧。 
    userHeadimgV.layer.masksToBounds = YES; //没这句话它圆不起来 
    userHeadimgV.layer.cornerRadius = 5.0; //设置图片圆角的尺度
16.ios ASIFormDataRequest上传图片到php服务器

需要ASIHTTPRequest第三方库的童鞋请到我的资源下载

使用ASIHTTPRequest第三方库需要导入系统包如下:

libz.1.2.5.dylib ,
MobileCoreServices.framework ,
SystemConfiguration.framework ,
CFNetwork.framework  ,
CoreGraphics.framework

需要导入ASIHTTPRequest包里的ASIFormDataRequest.h
#import "ASIFormDataRequest.h"

//上传图片
-(void)uploadImages:(UIButton *)sender
{
    NSData *data = UIImagePNGRepresentation(self.img.image);
    NSURL *url = [[NSURL alloc]initWithString:@"http://127.0.0.1/uploadFile/upload.php"];
    //以表格形式的请求对象
    ASIFormDataRequest *request = [[ASIFormDataRequest alloc]initWithURL:url];
    request.delegate =self;
    request.requestMethod = @"POST";//设置请求方式
    //添加请求内容
    [request addData:data withFileName:[NSString stringWithFormat:@"%d.png",arc4random()] andContentType:@"image/png" forKey:@"file"];
    //开始异步请求
    [request startAsynchronous];
     
    //如果成功则自动执行
    [request setDidFinishSelector:@selector(requestedSuccessfully)];
    //如果失败则自动执行
    [request setDidFailSelector:@selector(requestedFail)];
    
}
-(void)requestedSuccessfully
{
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"图片上传成功!" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil];
    [alert show];
    
}
-(void)requestedFail
{
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"图片上传失败!" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil];
    [alert show];
}

使用的php文件 upload.php
<?php
header("Content-type:text/html;charset=utf-8");
print_r($_FILES[‘file‘]);

$filename = $_FILES[‘file‘][‘name‘];

if(!$_FILES[‘file‘][‘error‘]){

if(move_uploaded_file($_FILES[‘file‘][‘tmp_name‘],"./upload/".$filename))
   {
 
    echo "文件上传成功";
 
  }else{
  echo "文件上传失败le";
  }

}else{

echo "文件上传错误";
}

?>

17.监听电话状态
先导入看清楚 要先导入CoreTelephony框架 再写下面的
#import <CoreTelephony/CTCall.h>
#import <CoreTelephony/CTCallCenter.h>

然后   我是写在 appicationFinished(忘了怎么写的)

CTCallCenter*callCenter=(CTCallCenter*)[[CTCallCenter alloc] init];
    callCenter.callEventHandler=^(CTCall*call){
        if (call.callState==CTCallStateDisconnected) {
            UIAlertView*alert=[[UIAlertView alloc] init];
            [email protected]"CTCallStateDisconnected";
            [alert addButtonWithTitle:@"OK"];
            [alert show];
            [alert release];
        }
        else if(call.callState==CTCallStateConnected){
            UIAlertView*alert=[[UIAlertView alloc] init];
            [email protected]"CTCallStateConnected";
            [alert addButtonWithTitle:@"OK"];
            [alert show];
            [alert release];
        }
        else if(call.callState==CTCallStateIncoming){
            UIAlertView*alert=[[UIAlertView alloc] init];
            [email protected]"CTCallStateIncoming";
            [alert addButtonWithTitle:@"OK"];
            [alert show];
            [alert release];
        }
       
    };

时间: 2024-10-07 10:17:35

ios随笔的相关文章

IOS 随笔记录

一.IOS 关闭键盘: 1.让所有控件的键盘隐藏 // 这个方法可以让整个view取消第一响应者,从而让所有控件的键盘隐藏 [self.view endEditing:YES]; 2.让某个textFiled的取消第一响应者 // 让某个textFiled的取消第一响应者 [textField resignFirstResponder]; 二.IOS 动画:(transform 属性) 1.透明度 ,取值范围0~1.0(透明~不透明). // 透明度 ,取值范围0~1.0(透明~不透明). _b

iOS随笔-UIWebView的基本简介-官方文档翻译

继承关系:NSObject-UIResponder-UIView-UIWebView 遵循:NSCoding NSObject UIAppearance UIAppearanceContainer UICoordinateSpace UIDynamicItem UIScrollViewDelegate UITraitEnvironment 你可以使用UIWebView类嵌入网页内容在您的应用程序.这样做,您只需创建一个UIWebView对象,将它附加到一个窗口,并发送一个请求来加载网页内容.你也

IOS随笔-- Command /usr/bin/codesign failed with exit code 1

我今天遇见一个蛋疼的问题,因为本机上装有两个xcode ,分别是xcode5.1.1和xcode6.1,xcode5版本真机测试没一点问题?但是xcode6真机测试的时候问题来了编译不通过,Command /usr/bin/codesign failed with exit code 1 的错误. 于是开始了艰辛的查询工作,再查了多个资料后最终没有解决掉问题,心灰意冷啊! 出去抽了一支烟,整理下思路,回来把证书以及描述文件全部删掉 然后重新创建证书以及描述文件,重新配置,clean一下,运行..

iOS随笔记录

1,定义enum的方法 typedef enum : NSUInterger { MyEnum_ValueA = 1;  //default is 0 MyEnum_ValueB; MyEnum_ValueC; } MyEnum; 注:一般都会把枚举名字作为值的前缀 注:访问的时候直接写MyEnum_ValueA,不用MyEnum.MyEnum_ValueA 注:NSUInterger字符串格式化时用%ld

iOS随笔--.pch文件的使用

•pch头文件的内容能被项目中的其他所有源文件共享和访问 •一般在pch文件中定义一些全局的宏 •在pch文件中添加下列预处理指令,然后在项目中使用Log(…)来输出日志信息,就可以在发布应用的时候,一次性将NSLog语句移除(在调试模式下,才有定义DEBUG) #ifdef DEBUG #define Log(...) NSLog(__VA_ARGS__) #else #define Log(...) /* */ #endif

IOS 随笔 -- _OBJC_CLASS_$xxx&quot;, referenced from:和 linker command failed with exit code 1 (use -v to see invocation)问题解决

因为项目需求需要根据用户的信息生成二维码,二维码SDK主流(ZXing)(ZBar),我选择的是(ZBar),但是在添加过程中出现了这样的问题: "_OBJC_CLASS_$_xx文件名", referenced from: linker command failed with exit code 1 (use -v to see invocation) file:///Users/tudali/Desktop/屏幕快照%202014-11-06%2017.42.44.png 问题处理

IOS随笔-- You can set the &quot;Build Active Architecture Only&quot; and &quot;Archs&quot; values from command line itself. We set ARCHS=&quot;armv7 armv7s&quot; ONLY_ACTIVE_ARCH=NO.

今天出现这个问题 No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=arm64, VALID_ARCHS=armv7 armv7s). 解决参考: http://stackoverflow.com/questions/12889065/no-architectures-to-compile-for-only-active-arch-yes-active-arch-x86-64-valid

iOS 随笔 允许所有不安全网络访问项目

允许任意请求访问app   App Transport Security Settings -> Allow Arbitrary Loads  YES

iOS 随笔小技巧 弱self 打印当前类行数列数,多人开发自动适配pch地址,获取设备uid的信息

$(SRCROOT)/PrefixHeader.pch自动适配pch地址 __weak __block typeof(self) weakself = self; __weak typeof(self)weakSelf = self; #define DN_DEBUG_LOG(fmt, ...) {NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); } NSDictionary *if