11 2013 档案

摘要:1.下载XMPPFramework框架:https://github.com/robbiehanson/XMPPFramework2.导入依赖框架–CocoaLumberjack:日志框架–CocoaAsyncSocket:底层网络框架•需要添加CFNetwork&Security框架依赖–KissXML:XML解析框架•需要添加libxml2.dylib框架依赖•需要指定如下编译选项:OTHER_LDFLAGS = -lxml2HEADER_SEARCH_PATHS = /usr/include/libxml2–libidn•将以下4个文件夹导入到项目–Authentication– 阅读全文

posted @ 2013-11-27 21:15 林源 阅读(256) 评论(0) 推荐(0)

摘要:•下载并安装:http://www.igniterealtime.org/projects/openfire/index.jsp••安装位置:/usr/local/openfire/•安装位置该文件夹的用户访问权限•数据库脚本保存在/usr/local/openfire/resources/database文件夹下•将openfire_mysql.sql第59行的字段类型修改为VARCHAR(255)Openfire数据库设置•# 进入mysql控制台•mysql -u root –p•# 创建数据库openfire•create database openfire;•# 修改数据库字符集•a 阅读全文

posted @ 2013-11-27 21:13 林源 阅读(224) 评论(0) 推荐(0)

摘要:XMPP定义:•XMPP:The Extensible Messaging and Presence Protocol(可扩展通讯和表示协议)•XMPP可用于服务类实时通讯、表示和需求响应服务中的XML数据元流式传输。XMPP以Jabber协议为基础,而Jabber是即时通讯中常用的开放式协议•XMPP是基于XML的协议,用于即时消息(IM)以及在线现场探测。促进服务器之间的准即时操作。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息,即使其操作系统和浏览器不同XMPP的基本结构•XMPP是一个典型的C/S架构,而不是像大多数即时通讯软件一样,使用P2P客户端到客户端的架构,也 阅读全文

posted @ 2013-11-27 21:11 林源 阅读(273) 评论(0) 推荐(0)

摘要:1 修改背景searchbar =[[UISearchBar alloc]initWithFrame:CGRectMake(0,KTopBarHeight, 320, KTopBarHeight)];searchbar.delegate=self;searchbar.keyboardType= UIKeyboardTypeDefault;//[[searchbar.subviews objectAtIndex:0]removeFromSuperview];UIImage *img = [[UIImage imageNamed: @"searchBar_bg.png"]str 阅读全文

posted @ 2013-11-24 22:01 林源 阅读(263) 评论(0) 推荐(0)

摘要:-(UITableViewCell*) tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath{staticNSString*CellIdentifier =@"Cell"; UITableViewCell*cell = [tableViewdequeueReusableCellWithIdentifier:CellIdentifier]; if(cell ==nil) {NSArray*array = [[NSBundlemainBundle]loadNibNamed: 阅读全文

posted @ 2013-11-24 21:43 林源 阅读(182) 评论(0) 推荐(0)

摘要:TableView的设置1.设置table头部和底部的view// 底部(宽度固定是320)tableView.tableFooterView = footer;// 头部(宽度固定是320)tableView.tableHeaderView = header;2.设置每一组头部和底部的高度tableView.sectionHeaderHeight = 5;tableView.sectionFooterHeight = 0;3.设置tableView的背景// 当tableview的样式为group时,如果想更换背景,必须清除默认条纹状的backgroundView// backgroundV 阅读全文

posted @ 2013-11-24 21:38 林源 阅读(361) 评论(0) 推荐(0)

摘要:一、Cell的设置1.设置cell的背景view和选中时的背景viewUIImageView *bg = [[UIImageView alloc] init];bg.image = [UIImage imageNamed:@"abc.png"];cell.backgroundView = bg;UIImageView *selectedBg = [[UIImageView alloc] init];selectedBg.image = [UIImage imageNamed:@"cde.png"];cell.selectedBackgroundView 阅读全文

posted @ 2013-11-24 21:24 林源 阅读(299) 评论(0) 推荐(0)

摘要:1.显示HUDMBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];hud.labelText = @"哥正在加载中...";hud.dimBackground = YES;2.移除hud[MBProgressHUD hideAllHUDsForView:self.view animated:YES]; 阅读全文

posted @ 2013-11-24 21:08 林源 阅读(307) 评论(0) 推荐(0)

摘要:1.依赖的框架* MobileCoreServices.framework* SystemConfiguration.framework* Security.framework2.主头文件:AFNetworking.h3.创建POST请求对象// BaseURL是基准路径,格式为-> 协议头://主机名,不能包含其他路径AFHTTPClient *client = [AFHTTPClient clientWithBaseURL:[NSURL URLWithString:@"https://api.weibo.com"]];// Method是请求方法// path是拼 阅读全文

posted @ 2013-11-24 21:06 林源 阅读(417) 评论(0) 推荐(0)

摘要:一、动态改变Cell的高度1.利用tableView代理方法的返回值决定每一行cell的高度- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath二、UIFont// 返回字体的行高* [UIFont systemFontOfSize:10].lineHeight 阅读全文

posted @ 2013-11-24 21:04 林源 阅读(596) 评论(0) 推荐(0)

摘要:一、SDWebImage的使用1.依赖的框架* ImageIO.framework* MapKit.framework2.UIImageView下载图片需要的头文件:UIImageView+WebCache.h3.调用方法下载图片// url是图片路径// placeholder是占位图片(正在下载图片时,暂时显示的图片)// options是缓存策略- (void)setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder- (void)setImageWithURL:(NSURL *)url placeholde 阅读全文

posted @ 2013-11-24 21:02 林源 阅读(1280) 评论(0) 推荐(0)

摘要:一、自动伸缩属性UIViewAutoresizingNone 不伸缩UIViewAutoresizingFlexibleLeftMargin 跟父控件左边的距离自动伸缩UIViewAutoresizingFlexibleRightMargin 跟父控件右边的距离自动伸缩UIViewAutoresizingFlexibleTopMargin 跟父控件顶部的距离自动伸缩UIViewAutoresizingFlexibleBottomMargin 跟父控件底部的距离自动伸缩UIViewAutoresizingFlexibleWidth 宽度跟随父控件宽度自动伸缩UIView... 阅读全文

posted @ 2013-11-24 20:59 林源 阅读(206) 评论(0) 推荐(0)

摘要:0.先加入主头文件#import "MJRefresh.h"1.添加下拉刷新MJRefreshHeaderView *header = [MJRefreshHeaderView header];header.scrollView = self.tableView;header.delegate = self;2.添加上拉加载更多MJRefreshFooterView *footer = [MJRefreshFooterView footer];footer.scrollView = self.tableView;footer.delegate = self;3.监听刷新状态 阅读全文

posted @ 2013-11-24 20:57 林源 阅读(671) 评论(2) 推荐(0)

摘要:微博正文开发步骤总结1.新建正文控制器,在点击首页的某一条微博时跳转过去2.在MainController中设置导航控制器的代理,监听所有导航控制器的跳转1> 如果即将显示的不是根控制器* 将导航控制器view的高度拉长为屏幕的高度(不包括状态栏高度)* 添加Dock到跟控制器(目的是在切换控制器时,Dock能随着根控制器一起移动。注意设置Dock的y值,当根控制器view是UIScrollView时,要加上contentOffset的y值。)* 给即将显示的控制器添加左上角的返回按钮2> 如果显示完毕的是根控制器* 将导航控制器view的高度还原为默认高度(屏幕高度 - Dock 阅读全文

posted @ 2013-11-22 22:06 林源 阅读(308) 评论(0) 推荐(0)

摘要:一、tableView每组的头部控件1.控件宽度默认就是tableView的宽度2.控件高度由下面的代理方法决定- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section二、通过tableView的代理方法控制某一行的cell能否达到高亮选中状态- (BOOL)tableView:(UITableView *)tableView shouldHighlightRowAtIndexPath:(NSIndexPath *)indexPath 阅读全文

posted @ 2013-11-22 22:02 林源 阅读(417) 评论(0) 推荐(0)

摘要:一、导航控制器的代理1.UINavigationController的delegate属性2.代理方法1> 即将显示新控制器时调用/*navigationController : 导航控制器viewController : 即将显示的新控制器*/- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated2> 新控制器显示完毕时调用 阅读全文

posted @ 2013-11-22 22:01 林源 阅读(340) 评论(0) 推荐(0)

摘要:1.webView之所以能够滚动,因为它内部有一个UIScrollView子控件2.移除webView顶部和底部灰色的一层view* 遍历webView中scrollView内部的所有子控件* 移除里面的UIImageView3.利用webView执行脚本[webView stringByEvaluatingJavaScriptFromString:script]; 阅读全文

posted @ 2013-11-22 21:59 林源 阅读(208) 评论(0) 推荐(0)

摘要:1.比较大小- (NSComparisonResult)compare:(NSString *)string;返回值NSComparisonResult有3种情况:NSOrderedAscending = -1L, // 升序(左边 右边)比如[@"ab" compare:@"ad"]返回NSOrderedAscending比如[@"ab" compare:@"aa"]返回NSOrderedDescending比如[@"ab" compare:@"ab"]返回NSOrdere 阅读全文

posted @ 2013-11-22 21:57 林源 阅读(185) 评论(0) 推荐(0)

摘要:1.新建一个xib描述UICollectionViewCell(比如DealCell.xib),设置好resuse identifier(比如deal)2.控制器继承UICollectionViewController1> 注册xib[self.collectionView registerNib:[UINib nibWithNibName:@"DealCell" bundle:nil] forCellWithReuseIdentifier:@"deal"];2> 重写init方法- (id)init{ UICollectionViewFlo 阅读全文

posted @ 2013-11-22 21:56 林源 阅读(714) 评论(0) 推荐(0)

摘要:1> 规律* width 是宽高中最小的那个值* height 是宽高中最大的那个值2> 举例(比如窗口根控制器的view,有状态栏的情况下)* 横屏 width = 748,height = 1024* 竖屏 width = 768,height = 1004 阅读全文

posted @ 2013-11-22 21:55 林源 阅读(227) 评论(0) 推荐(0)

摘要:1.屏幕即将旋转的时候调用(控制器监控屏幕旋转)- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration2.屏幕旋转完毕的时候调用- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation3.view创建完毕的时候调用- (void)viewDidLoad这个方法调用时,控制器的view只是 阅读全文

posted @ 2013-11-22 21:54 林源 阅读(186) 评论(0) 推荐(0)

摘要:一、UIView的clipsToBounds属性* 默认情况下,超出父控件尺寸范围的子控件还是可见的* 如果设置父控件的clipsToBounds=YES,就会裁剪掉超出父控件尺寸范围内的子控件,即超出父控件尺寸范围内的子控件就不显示二、layoutSubViews* 在一个控件的尺寸(宽高发生改变)的时候调用,一般在这里重新调整内部子控件的位置* 重写layoutSubViews方法时,一定调用回super的layoutSubViews的方法(super内部有一些必须要执行的操作)三、触摸事件传递(默认情况下)* 如果父控件不能接收事件,子控件是不可能接收到事件的* 如果点击的区域不在某个控 阅读全文

posted @ 2013-11-22 21:52 林源 阅读(236) 评论(0) 推荐(0)

摘要:一、运行时简单使用1.包含头文件2.给对象发送消息的方法:objc_msgSend(id, SEL, ....)* 第1个参数是对象* 第2个参数是方法* 后面的...参数是调用方法需要传递的参数3.平时的方法调就是转成了底层的消息机制函数调用,比如[person setAge:10];转成了objc_msgSend(person, @selector(setAge:), 10);二、KVC补充NSArray *data = [_citiesData valueForKeyPath:@"name"];上面代码所做的操作是:* 先取出_citiesData中的每一个对象元素* 阅读全文

posted @ 2013-11-22 21:50 林源 阅读(173) 评论(0) 推荐(0)

摘要:1.搜索框的代理(delegate)方法#pragma mark 监听搜索框的文字改变- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText#pragma mark 搜索框开始编辑(开始聚焦)- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar#pragma mark 当退出搜索框的键盘时(失去焦点)- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar#pr 阅读全文

posted @ 2013-11-22 21:48 林源 阅读(455) 评论(0) 推荐(0)

摘要:一、封装一个View的思路1.将View内部的业务逻辑(显示内容)封装到View中2.一般情况下,View的位置应该由父控件来决定,也就是位置不应该固定死在View内部3.至于View的宽高,根据具体情况来决定要不要由父控件决定 阅读全文

posted @ 2013-11-22 21:45 林源 阅读(94) 评论(0) 推荐(0)

摘要:一、iPad中控制器view的width和height1> 规律* width 是宽高中最小的那个值* height 是宽高中最大的那个值2> 举例(比如窗口根控制器的view,有状态栏的情况下)* 横屏 width = 748,height = 1024* 竖屏 width = 768,height = 1004二、项目图标和启动图片不同设备上的图标和启动图片尺寸规格是不一样的,详情可以在苹果官方文档中搜索“app icon”,查看下列搜索结果:1> App Icons on iPad and iPhone2> App Icons 阅读全文

posted @ 2013-11-22 21:44 林源 阅读(356) 评论(0) 推荐(0)

摘要:•在iOS6之前,关于屏幕旋转的适配和iPhone,iPad屏幕的自动适配,基本都是由Autoresizing Mask来完成的。但是随着大家对iOS App的要求越来越高,以及今后可能出现的多种屏幕和分辨率的设备,Autoresizing Mask显得有些落伍和迟钝了。AutoLayout可以完成所有原来Autoresizing Mask能完成的工作,同时还能胜任一些原来无法完成的任务,其中包括:•AutoLayout可以指定任意两个view的相对位置,而不需要像 阅读全文

posted @ 2013-11-20 22:30 林源 阅读(294) 评论(0) 推荐(0)

摘要:•[cancelButton(72)]-12-[acceptButton(50)]•取消按钮宽72point,accept按钮宽50point,它们之间间距12point••[wideView(>=60@700)]•wideView宽度大于等于60point,该约束条件优先级为700(优先级最大值为1000,优先级越高的约束越先被满足)••V:[redBox][yellowBox(==redBox)]•竖直布局,先是一个redBox,其下方紧接一个宽度等于redBox宽度的yellowBox••H:|-[Find]-[FindNext]-[FindField(>=20)]-|•水平 阅读全文

posted @ 2013-11-20 22:29 林源 阅读(232) 评论(0) 推荐(0)

摘要:•AutoLayout是一种基于约束的,描述性的布局系统–基于约束:和以往定义frame的位置和尺寸不同,AutoLayout的位置确定是以所谓相对位置的约束来定义的,比如x坐标为superView的中心,y坐标为屏幕底部上方10像素等–描述性:约束的定义和各个view的关系使用接近自然语言或者可视化语言的方法来进行描述–布局系统:用来负责界面的各个元素的位置。••AutoLayout为开发者提供了一种不同于传统对于UI元素位置指定的布局方法。以前,不论是在IB里拖放,还是在代码中写,每个UIView都会有自己的frame属性,来定义其在当前视图中的位置和尺寸。而使用AutoLayout,就变 阅读全文

posted @ 2013-11-20 22:28 林源 阅读(1383) 评论(0) 推荐(0)

摘要:* 用bounds和frame来修改尺寸是有一些小区别的三、isEqual:方法1> 系统会根据对象isEqual方法的返回值来决定两个对象是否相同* 比如判断对象a和b是否相同,就会查看[a isEqual:b]或者[b isEqual:a]的返回值2> 当调用数组的removeObject:时,就会调用“方法参数”的isEqual:方法找出相同对象来移除* 比如[array removeObject:dd],会调用dd的isEqual:方法找出在数组中的相同对象进行移除3> 当调用数组的containsObject:时,就会调用“方法参数”的isEqual:方法来查看数组 阅读全文

posted @ 2013-11-20 22:10 林源 阅读(199) 评论(0) 推荐(0)

摘要:1.比较两个日期之间的时间差距// 1.日历对象(标识:时区相关的标识)NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];// 2.合并标记NSUInteger flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;// 3.比较return [ca 阅读全文

posted @ 2013-11-20 21:48 林源 阅读(779) 评论(0) 推荐(0)

摘要:一、MapView1.显示用户的位置点(用蓝色圆点标记)mapView.showsUserLocation = YES;2.代理方法1> 当定位到用户的位置就会调用- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation2> 拖动地图(地图展示的区域改变了)就会调用- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated3.大头针的展示1> 添加大头针- (vo 阅读全文

posted @ 2013-11-20 21:46 林源 阅读(1209) 评论(0) 推荐(0)

摘要:kvc和kvo1.kvcKey-Value Coding (KVC)KVC,即是指NSKeyValueCoding,一个非正式的 Protocol,提供一种机制来间接访问对象的属性。KVO 就是基于 KVC 实现的关键技术之一。一个对象拥有某些属性。比如说,一个 Person 对象有一个 name 和一个 address 属性。以 KVC 说法,Person 对象分别有一个 value 对应他的 name 和 address 的 key。 key 只是一个字符串,它对应的值可以是任意类型的对象。从最基础的层次上看,KVC 有两个方法:一个是设置 key 的值,另一个是获取 key 的值。如下面 阅读全文

posted @ 2013-11-10 21:45 林源 阅读(1536) 评论(0) 推荐(0)

摘要:ISO UI基础控件.................................................................................................................................................................................. 21. UILabel——标签................................................................................................ 阅读全文

posted @ 2013-11-07 10:56 林源 阅读(1211) 评论(0) 推荐(0)

导航