`
wenqxin
  • 浏览: 14164 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

IOS学习笔记

    博客分类:
  • ios
 
阅读更多

1、UISearchBar自定义背景、取消按钮中文设置

C代码  收藏代码
  1. UISearchBar *seachBar=[[UISearchBar alloc] init];  
  2.   
  3. //修改搜索框背景  
  4. seachBar.backgroundColor=[UIColor clearColor];  
  5.   
  6. //去掉搜索框背景  
  7. [[searchbar.subviews objectAtIndex:0]removeFromSuperview];  
  8.   
  9. for (UIView *subview in seachBar.subviews)   
  10. {    
  11. if ([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")])  
  12. {    
  13. [subview removeFromSuperview];    
  14. break;    
  15. }    
  16. }   
  17.   
  18. //自定义背景  
  19. UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"40-di.png"]];  
  20. [searchBar insertSubview:imageView atIndex:1];  
  21.   
  22. //输入搜索文字时隐藏搜索按钮,清空时显示  
  23. - (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar {    
  24. searchBar.showsScopeBar = YES;    
  25. [searchBar sizeToFit];    
  26. [searchBar setShowsCancelButton:YES animated:YES];    
  27. return YES;    
  28. }    
  29.   
  30. - (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar {    
  31. searchBar.showsScopeBar = NO;    
  32. [searchBar sizeToFit];    
  33. [searchBar setShowsCancelButton:NO animated:YES];    
  34. return YES;    
  35. }    
  36.   
  37. //修改UISearchBar取消按钮中文字体  
  38.     for (id aa in [searchBar subviews]) {  
  39.         if ([aa isKindOfClass:[UIButton class]]) {  
  40.             UIButton *btn = (UIButton *)aa;  
  41.             [btn setTitle:@"取消" forState:UIControlStateNormal];  
  42.         }  
  43.     }  

 

2、UISearchBar

C代码  收藏代码
  1. #pragma mark 搜索控件  
  2. //搜索  
  3. - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{  
  4.     UIStoryboard *mainStory = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];  
  5.     FirstViewController *fVC = [mainStory instantiateViewControllerWithIdentifier:@"goFirstView"];  
  6.     fVC.showStr = self.searchBar.text;  
  7.     [self presentModalViewController:fVC animated:YES];  
  8. }  
  9.   
  10. //搜索输入内容时触发  
  11. - (void) searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText{  
  12.       
  13. }  
  14.   
  15. //焦点进入搜索  
  16. - (void) searchBarTextDidBeginEditing:(UISearchBar *)searchBar{  
  17.     self.soundBtn.hidden = YES;  
  18.     [self searchBar:searchBar activate:YES];  
  19.       
  20. }  
  21.   
  22. //取消搜索按钮  
  23. - (void) searchBarCancelButtonClicked:(UISearchBar *)searchBar {  
  24.     self.searchBar.text = @"";  
  25.     self.soundBtn.hidden = NO;  
  26.     [self searchBar:searchBar activate:NO];  
  27. }  
  28.   
  29. - (void)searchBar:(UISearchBar *)searchBar activate:(BOOL) active{  
  30.     if (!active) {    
  31.         [self.searchBar resignFirstResponder];    
  32.     }   
  33.       
  34.     [self.searchBar setShowsCancelButton:active animated:YES];  
  35.     //修改UISearchBar取消按钮字体  
  36.     for (id aa in [searchBar subviews]) {  
  37.         if ([aa isKindOfClass:[UIButton class]]) {  
  38.             UIButton *btn = (UIButton *)aa;  
  39.             [btn setTitle:@"取消" forState:UIControlStateNormal];  
  40.         }  
  41.     }  
  42. }  

 

3、NSNotificationCenter通告中心

   NSNotificationCenter通告与一个按钮中用addTarget绑定方法有些相似,按钮中的绑定触发事件时才调用关联消息。而NSNotificationCenter的范围则大得多,比如说摇动中,当触发摇动事件时,就提交并触发消息。

示例如下:

C代码  收藏代码
  1. //1、需触发的消息方法  
  2. - (void) testNotification{  
  3.     NSLog(@"测试通告中心。。。。。。。");  
  4. }  
  5.   
  6. - (void)viewDidLoad  
  7. {  
  8.     [super viewDidLoad];  
  9.     //2、对象注册,关联消息  
  10.     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(testNotification) name:@"Dwen_Notification" object:nil];  
  11.       
  12. }  
  13.   
  14. #pragma 通告中心  
  15. - (IBAction)notificationTest:(id)sender {  
  16.     //3、提交消息  
  17.     [[NSNotificationCenter defaultCenter] postNotificationName:@"Dwen_Notification" object:@"Request Object"];  
  18. }  

 

4、视图显示和消失将会调用的方法,可处理一些前一界面的还原初始状态。

- (void) viewWillDisappear:  视图消失时调用

- (void) viewWillAppear:      进入视图时调用

例如:点击搜索后,会的取消按钮,跳到下一界面再返回时,需把取消按钮隐藏掉可通过它们处理。

 

5、获取程序的AppDelegate

AppDelegate* appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];

 

6、ios4跳转界面

C代码  收藏代码
  1. QuotaManageViewController *qmvc = [[QuotaManageViewController alloc] init];  
  2.    [self.navigationController pushViewController:qmvc animated:YES];  
  3.    [qmvc release];  

 

7、UILable换行

C代码  收藏代码
  1. lab_1.lineBreakMode = UILineBreakModeWordWrap;  
  2. lab_1.numberOfLines = 0;  

 

8、ipad中设置tableview背景无效,有两种解决方法:

方法一:

C代码  收藏代码
  1. UIView *view = [[UIView alloc] init];  
  2.     view.backgroundColor = [UIColor clearColor];  
  3.     tableView2.backgroundView = view;  

 方法二:

C代码  收藏代码
  1. if ([self.tableView2 respondsToSelector:@selector(backgroundView)]) {  
  2.         self.tableView2.backgroundView = nil;  
  3.     }  

 

9、自定义UIView时,会继承它,下面是如何加载UIView对应xib。

C代码  收藏代码
  1. UIView *head_View = [[[NSBundle mainBundle] loadNibNamed:@"HeadView" owner:self options:nil] lastObject];  
  2.     head_View.frame = CGRectMake(0, -120, self.view.frame.size.width, 150);  
  3.     head_View.backgroundColor = [UIColor brownColor];  
  4.     [self.view addSubview:head_View];  

 

10、对UIView进行旋转。2012-11-07

今天在做ipad时,弹出的pop视图,总是横屏放着,不能竖屏。纠结了些时间,后来通过修改视图的坐标解决了该问题。

C代码  收藏代码
  1. CGAffineTransform at = CGAffineTransformMakeRotation(M_PI/2);//顺时钟旋转90  
  2.         at = CGAffineTransformTranslate(at, 200, 0);  
  3.         [popVC.view setTransform:at];  

 

11、关于在UIView上进行滑动手势和点击事件手势。

 

C代码  收藏代码
  1. ///////////注flowView为UIView//////////  
  2.  //添加滑动手势事件  
  3.     UIPanGestureRecognizer *gestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:flowView action:@selector(handleGesture:)];  
  4.     [flowView addGestureRecognizer:gestureRecognizer];  
  5.       
  6.     //添加点击手势事件  
  7.     flowView.userInteractionEnabled = YES;  
  8.     UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:flowView action:@selector(goBigImageView)];  
  9.     [flowView addGestureRecognizer:tap];  

 

C代码  收藏代码
  1. //滑动手势(里面有手势的不同状态,根据需要进行灵活运用)  
  2. - (void)handleGesture:(UIPanGestureRecognizer *)recognizer {  
  3.     //UITapGestureRecognizer  
  4.    if (recognizer.state == UIGestureRecognizerStateChanged){  
  5.        NSLog(@"UIGestureRecognizerStateChanged");  
  6.    }else if(recognizer.state == UIGestureRecognizerStateEnded){  
  7.        NSLog(@"UIGestureRecognizerStateEnded");  
  8.    }else if(recognizer.state == UIGestureRecognizerStateBegan){  
  9.        NSLog(@"UIGestureRecognizerStateBegan");  
  10.    }else if(recognizer.state == UIGestureRecognizerStateCancelled){  
  11.        NSLog(@"UIGestureRecognizerStateCancelled");  
  12.    }else if(recognizer.state == UIGestureRecognizerStateFailed){  
  13.        NSLog(@"UIGestureRecognizerStateFailed");  
  14.    }else if(recognizer.state == UIGestureRecognizerStatePossible){  
  15.        NSLog(@"UIGestureRecognizerStatePossible");  
  16.    }else if(recognizer.state == UIGestureRecognizerStateRecognized){  
  17.        NSLog(@"UIGestureRecognizerStateRecognized");  
  18.    }  
  19.   
  20. }  

 

12、启动时异常

Couldn't register com.yourcompany.ReciteWords with the bootstrap server. Error: unknown error code.
This generally means that another instance of this process was already running or is hung in the debugger

解决方法,重启设备或模拟器

 

13、读写plist文件

C代码  收藏代码
  1. - (void)readWritePlist{  
  2.          //获取路径  
  3.          NSString *homePath = [[NSBundle mainBundle] executablePath];  
  4.     NSArray *strings = [homePath componentsSeparatedByString: @"/"];  
  5.     NSString *executableName  = [strings objectAtIndex:[strings count]-1];    
  6.     NSString *baseDirectory = [homePath substringToIndex:  
  7.                                [homePath length]-[executableName length]-1];      
  8.     //data.plist文件  
  9.     NSString *filePath = [NSString stringWithFormat:@"%@/data.plist",baseDirectory];  
  10.     NSLog(@"filePath: %@",filePath);  
  11.     NSMutableDictionary *dataDict = [[NSMutableDictionary alloc] initWithContentsOfFile:filePath];  
  12.     NSLog(@"dataDict: %@",dataDict);  
  13.     //change the value or add the value  
  14.     [dataDict setObject:@"YES" forKey:@"Trial"];  
  15.         [dataDict setValue:@"dwen" forKey:@"nickName"];  
  16.         //write back to data.plist file  
  17.     [dataDict writeToFile:filePath atomically:NO];  
  18.   
  19. }  

 

14、ios生成随机数(三种方式):

 int i = rand() % 5;

int i = random() % 5;

int  x = arc4random() % 100;//[0,100] 包括0 ,不包括100

int  y = (arc4random() % 501) + 500;//[500,1000 ],包括500 ,不包括1000

 

15、UIImage图片处理:缩放、设定大小、存储 (转载)

C代码  收藏代码
  1. //1.等比率缩放  
  2. - (UIImage *)scaleImage:(UIImage *)image toScale:(float)scaleSize{  
  3. UIGraphicsBeginImageContext(CGSizeMake(image.size.width * scaleSize, image.size.height * scaleSize);  
  4. [image drawInRect:CGRectMake(0, 0, image.size.width * scaleSize, image.size.height * scaleSize)];  
  5. UIImage *scaledImage = UIGraphicsGetImageFromCurrentImageContext();  
  6. UIGraphicsEndImageContext();  
  7. return scaledImage;  
  8. }  
  9.   
  10. //2.自定长宽  
  11. - (UIImage *)reSizeImage:(UIImage *)image toSize:(CGSize)reSize{  
  12. UIGraphicsBeginImageContext(CGSizeMake(reSize.width, reSize.height));  
  13. [image drawInRect:CGRectMake(0, 0, reSize.width, reSize.height)];  
  14. UIImage *reSizeImage = UIGraphicsGetImageFromCurrentImageContext();  
  15. UIGraphicsEndImageContext();  
  16. return reSizeImage;  
  17. }  
  18.   
  19. //3.处理某个特定View  
  20. 只要是继承UIView的object 都可以处理  
  21. 必须先import QuzrtzCore.framework  
  22. -(UIImage*)captureView:(UIView *)theView{  
  23. CGRect rect = theView.frame;  
  24. UIGraphicsBeginImageContext(rect.size);  
  25. CGContextRef context = UIGraphicsGetCurrentContext();  
  26. [theView.layer renderInContext:context];  
  27. UIImage *img = UIGraphicsGetImageFromCurrentImageContext();  
  28. UIGraphicsEndImageContext();  
  29. return img;  
  30. }  
  31.   
  32. //4.储存图片  
  33. 储存图片这里分成储存到app的文件里, 储存到手机的图片库里  
  34. // 储存到app的文件里  
  35. NSString *path = [[NSHomeDirectory()stringByAppendingPathComponent:@"Documents"]stringByAppendingPathComponent:@"image.png"];  
  36. [UIImagePNGRepresentation(image) writeToFile:pathatomically:YES];  

 

16、object-c正则验证,方式之一,如下:

    NSPredicate用于指定过滤器的条件。通过该对象准确地描述所需条件,对每个对象通过谓词进行筛选,判断它们是否与条件相匹配。

C代码  收藏代码
  1. NSString *numberRegex = @"[1-4]";  
  2. NSPredicate *number = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",numberRegex];       
  3. bool result = [number evaluateWithObject:@"1"];  

 

 

17、定义程序块

C代码  收藏代码
  1. //定义程序块  
  2.     void(^loggerBlock)(void);  
  3.     //实现程序块  
  4.     loggerBlock = ^{NSLog(@"i am test block.");};  
  5.     //执行程序块  
  6.     loggerBlock();  

 

18、反射

C代码  收藏代码
  1. //反射(对CodingVo类进行反射)  
  2.     Class cls = NSClassFromString(@"CodingVo");  
  3.     id obj = [[cls alloc] init];  
  4.     SEL selector = NSSelectorFromString(@"test1");  
  5.    //调用CodingVo类中test1方法  
  6.     [obj performSelector:selector withObject:nil];  

 

19、调用短信、电话、邮件、Safari浏览器API

C代码  收藏代码
  1. //调用短信  
  2. - (IBAction)callMsg:(id)sender {  
  3.     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms://135587"]];  
  4. }  
  5.   
  6. //调用电话  
  7. - (IBAction)callTel:(id)sender {  
  8.     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://135587"]];  
  9. }  
  10.   
  11. //调用Safari浏览器  
  12. - (IBAction)callSafari:(id)sender {  
  13.     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.baidu.com/"]];  
  14. }  
  15.   
  16. // 调用email  
  17. - (IBAction)callEmail:(id)sender {  
  18.     [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://test@126.com"]];  
  19. }  

 

20、操作声音文件,添加AudioToolbox.framework库。

#import <AudioToolbox/AudioToolbox.h>

@property (assign,nonatomic) SystemSoundID soundID;

//测试播放声音
- (void) testSound{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"2" ofType:@"caf"];
    NSURL *url = [NSURL fileURLWithPath:path];
    AudioServicesCreateSystemSoundID((__bridge CFURLRef)(url), &soundID);
    AudioServicesPlaySystemSound(soundID);
    NSLog(@"testSound...mp3音频文件格式不支持");
}

 

21、ios触摸事件监听和操作(UITouch)

C代码  收藏代码
  1. //手指触摸屏幕时报告  
  2. - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{  
  3.     NSLog(@"touchesBegan");  
  4. }  
  5. //手指在屏幕上移动时报告  
  6. - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{  
  7.      NSLog(@"touchesMoved");  
  8. }  
  9. //手指离开屏幕时报告  
  10. - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{  
  11.      NSLog(@"touchesEnded");  
  12. }  
  13. //因接听电话或其他因素导致取消触摸时报告  
  14. - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{  
  15.      NSLog(@"touchesCancelled");  
  16. }  

 

22、\u00B0表示角度符号

NSString *latitudeStr = [NSString stringWithFormat:@"%g\u00B0",newLocation.coordinate.latitude];

 

 23、实现ios动画效果有两种方式,一种是UIView层面上的,另一种是CATransation更底层次控制

 

24、设备信息

NSLog(@"系统名称:%@ ,系统版本: %@",[[UIDevice currentDevice] systemName],[[UIDevice currentDevice] systemVersion]);

 

 25、MPMoviePlayerViewController控件中,需把Done改为中文,对工程中plist文件进行设置。对其他英文控件中的英文文本也有同样有效。设置见下图:



 

 26、文本层CATextLayer

 

C代码  收藏代码
  1. CATextLayer *txtLayer = [CATextLayer layer];  
  2.         txtLayer.string = @"地球";  
  3.         txtLayer.foregroundColor = [[UIColor redColor] CGColor];  
  4.         txtLayer.bounds = CGRectMake(0, 0, 200, 50);  
  5.         txtLayer.position = CGPointMake(0, 0);  
  6.         [imageLayer addSublayer:txtLayer];  
 

 27、assign、retain、copy、readonly区别

assign:指定setter方法用简单的赋值,这是默认操作。你可以对标量类型(如int)使用这个属性。你可以想象一个float,它不是一个对象,所以它不能retain、copy。

retain:指定retain应该在后面的对象上调用,前一个值发送一条release消息。你可以想象一个NSString实例,它是一个对象,而且你可能想要retain它。

copy:指定应该使用对象的副本(深度复制),前一个值发送一条release消息。基本上像retain,但是没有增加引用计数,是分配一块新的内存来放置它。

readonly:将只生成getter方法而不生成setter方法(getter方法没有get前缀)。

readwrite:默认属性,将生成不带额外参数的getter和setter方法(setter方法只有一个参数)。

atomic:对于对象的默认属性,就是setter/getter生成的方法是一个原子操作。如果有多个线程同时调用setter的话,不会出现某一个线程执行setter全部语句之前,另一个线程开始执行setter的情况,相关于方法头尾加了锁一样。

nonatomic:不保证setter/getter的原子性,多线程情况下数据可能会有问题
28、声明关键字前加extern,为外部变量。外部变量可被其他任何方法或函数访问和更改其值的变量。
分享到:
评论

相关推荐

    ios学习笔记---simpleping

    这个"ios学习笔记---simpleping"旨在帮助初学者理解如何在iOS应用中实现简单的网络探测功能。 SimplePing是一个基于Objective-C的类,它提供了对ICMP(Internet Control Message Protocol)协议的支持,这个协议被...

    IOS 学习笔记补充1

    "IOS学习笔记补充1"是对前期学习内容的进一步丰富和完善,旨在帮助开发者更好地理解和掌握iOS开发的关键知识点。这份笔记不仅适用于初学者,对于有一定经验的开发者来说,也是一个有价值的参考资料。 在iOS开发中,...

    iOS学习笔记

    【iOS学习笔记】 在iOS开发领域,理解和掌握基础UI组件是至关重要的,因为它们构成了用户与应用程序交互的主要界面。这份笔记将深入探讨一些关键的概念和技术,帮助初学者建立起扎实的iOS开发基础。 首先,我们来...

    iOS学习笔记,技术道路走到黑.zip

    这份“iOS学习笔记,技术道路走到黑.zip”资源包含了一个名为"I-Love-iOS_master.zip"的子文件和一个“说明.txt”,它们可能是作者整理的iOS学习路径和代码示例。 首先,Swift语言是苹果公司在2014年WWDC上发布的...

    ios学习笔记 --sqllite3

    这篇“iOS学习笔记 --SQLite3”旨在帮助新手掌握如何在iOS应用中使用SQLite3进行数据管理,包括创建数据库、插入数据、查询数据等基本操作。 首先,我们需要了解SQLite3的基本概念。SQLite3是一个嵌入式的关系型...

    ios学习笔记

    ### iOS学习笔记:UI控件详解 在iOS应用开发中,UI控件是构建用户界面的基础元素,它们决定了应用程序的外观和用户体验。本篇将基于“ios学习笔记”中的内容,深入探讨iOS中常用的UI控件及其使用方法,旨在为初学者...

    iOS 学习笔记

    综上所述,这份"iOS学习笔记"涵盖了Swift编程、UIKit框架、数据管理、网络编程、UI设计、通知服务以及测试与优化等多个重要领域,是全面学习iOS开发的宝贵资料。通过深入学习和实践,你可以逐步成为一名熟练的iOS...

    iOS学习笔记之QuartzCore框架.pdf

    iOS 学习笔记之 QuartzCore 框架 QuartzCore 框架是 iOS 设备提供视觉反馈的核心框架,所有用户看到的显示界面都是图层合成的结果,而图层即是 QuartzCore 中的 CALayer。UIView 并不是直接显示在屏幕上,而是在...

    ios学习笔记之CKCalendar汉化

    这篇“ios学习笔记之CKCalendar汉化”主要探讨了如何对这个库进行汉化处理,使其适应中文环境。 CKCalendar是由Chris Keathley开发的,它提供了一个类似于Apple原生日历应用的界面,具有自定义事件、多视图模式(如...

    ios 学习笔记

    本文档基于给定的“iOS学习笔记”,深入探讨iOS应用程序生命周期的关键概念、阶段以及如何处理这些阶段。 #### 二、基础知识 **1.1 入口点:** iOS应用的入口点位于`main.m`文件中的`main`函数。此函数通过调用`...

    ios学习笔记二--电影网

    在本“ios学习笔记二--电影网”的教程中,我们将深入探讨如何使用Node.js和Express框架构建一个简单的在线电影数据库。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它使得开发者能够在服务器端使用...

    ios学习笔记中用到的美化按钮的背景图

    本篇笔记主要探讨如何利用背景图来美化iOS应用中的按钮,以提升整体视觉效果。 首先,我们来看两个文件:`blueButton.png` 和 `whiteButton.png`。这些通常是PNG格式的图像资源,用于设置按钮的背景。在iOS中,我们...

    IOS 学习笔记补充2

    // [self changeNavigationState]; //改变状态栏 和 导航栏的状态 // [self changeImageScale];...// [self viewAnimation]; //View的动画 // [self imgToGrayimg]; //UIImage转为灰度图 // [self ...

    iOS学习笔记之QuartzCore框架.rar

    QuartzCore框架是苹果iOS和macOS开发中的一个重要组成部分,主要负责图形渲染和动画效果的实现。本笔记将深入探讨QuartzCore框架的核心概念、...通过深入学习和实践,开发者可以创建出更具吸引力和用户体验的iOS应用。

Global site tag (gtag.js) - Google Analytics