10 2014 档案
摘要:讨论: 当执行那些与 UI 无关的任务,或者与 UI 交互的任务时,和执行其他任务一样,会需要大量时间,以上情况会经常出现。例如,你想下载一个图片并想在下载完成之后展现给用户。下载过程却和 UI 没有任何关系。 对于任何与 UI 无关的任务,你可以使用 GCD 中的全局并发队列。它们允许同步和异...
阅读全文
摘要:UI 相关的任务必须在主线程中执行,所以主队列是在 GCD 中执行 UI 任务的唯一候选对象。我们可以使用 dispatch_get_main_queue 函数得到处理主分派队列的句柄。 这里有 2 种向主队列分派任务的方法,两者都是异步的,即使在任务没有执行的时候也让你的程序继续:dispa...
阅读全文
摘要:问题:已经了解如何构建 Block Objects, 现在你想执行 Block Objects 来获取结果。讨论:1.如果你有一个独立 Block Object,你可以象调用 C 函数那样简单调用它void (^simpleBlock)(NSString *) = ^(NSString *param...
阅读全文
摘要:问题:你想要理解在 Objective-C 方法和在 Block Objects 中访问变量的区别方案:这儿简单总结一下关于 Block Objects 变量你需要知道的内容:1.局部变量在 Block Objects 和 Objective-C 方法中的工作原理非常相似。2.对于内联Block O...
阅读全文
摘要:问题:希望能够编写自己的 Block Objects 或与 iOS SDK 类使用 Block Objects。 讨论:1.Block Objects 的对象可以内联或编码为独立的代码块。我们从后一种开始:假设你在 Objective-C 中有一个方法,既能接受 NSInteger 类的 2 个整...
阅读全文
摘要:1.我们会一直和分派队列打交道,所以请确保你完全理解了其背后的概念。下面有 3 种分 派队列: Main Queue 这个队列在主线程上执行它的所有任务,Cocoa 和 Cocoa Touch 允许程序员在主线程 上调用一切 UI-related 方法。使用 dispatch_get_main_...
阅读全文
摘要:介绍: 当两个或两个以上的任务同时执行时就发生了并发. 即使只有一个CPU,现代操作系统也能够在同时执行多个任务.要实现这一点,需要给每个任务从CPU重分配一定的时间片 .例如,要在1秒内执行10个同样有限级的人物,操作系统会用10来平均分配1000毫秒,那么每个任务就会有100毫秒的CPU ...
阅读全文
摘要:一 .问题:你想用流畅直观的动画来移动和拖拽TableView中的cell和section方案: 用moveSection:toSection:方法把一个Section移动到新位置. 用moveRowAtIndexPath:toIndexPath:方法把一个cell从当前位置移动到新位置例子: ...
阅读全文
摘要:问题:想让用户使用APP时,只要通过一个手指放在APP中一个TableViewcell上,就能在他们原本可选的操作中使用复制/粘贴选项方案: 在TabView的委托对象上实现下面3个UITableViewDelegate协议方法: tableView:shouldShowMenuForRowAt...
阅读全文
摘要:1.启用tableView的滑动删除 (想让你的用户能从TableView中轻松删除行)方案:在delegate中实现tableView:editingStyleForRowAtIndexPath:方法,在data source中实现tableView:commitEditingStyle:forR...
阅读全文
摘要:1.实例化Table View 并设置一个Delegate2.向TableView填充数据- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typic...
阅读全文
摘要:按照以下步骤:1、打开你要在界面设计器中编辑的 XIB 文件2、在界面设计器中,确保你可以在选择的视图对象上自动布局,只要单击视图对象即可 3、点击 View→Utilities→Show File Inspector 菜单项4、在File Inspector里,Interface Builder ...
阅读全文
摘要:1.问题:你想相对于另一个 UI 组件来布局一个 UI 组件,到那会死这些 UI 组件具有不同的父控件。2.方案:确保你找到这两个 UI 组件的公共 UI 父视图并添加你的约束条件到这个父视图中。3.例子:3.1对你的方法的整合 具有一个清晰的方法是很重要的。很显然,在这个例子中我们使用了很少的约束...
阅读全文
摘要:控件.autorisizingMask 用于设置控件尺寸与位置属性autoresizesSubviews 表示是否让控件自动进行位置的调整,默认为YES(允许自动进行调整),如设置成NO,autoresizingMask属性将实效UIViewAutoresizingNone控件将不进行自动尺寸调整,...
阅读全文
摘要:1.问题:想要定义限制条件来改变一个 UI 组件在其父视图的水平和垂直方向布局的方法。2.讨论:使用 visual Format Language 在水平方向的限制条件使用的三个例子 : H:|-100-[_button]-100-| H:|-(=50)]-(=100,=100)-|...
阅读全文
摘要:将一个 UI 组件放置到屏幕的中央。换句话说,你想你想将一个视图放置到其父视图的中央位置,使用限制条件。 创建两个限制条件:一个是将目标视图的 center.x 位置排列在其父视图的 center.x 位置,并且另外一个是将目标视图的 center.y 位置排列在其父视图的 center.y 位置...
阅读全文
摘要:假设有一个按钮,你想把它放置在屏幕的中央。视图中心和按钮中心的相对位置可以简单地定义成如下: 按钮的center.x相当于视图中心的center.x 按钮的center.y相当于视图中心的center.y苹果发现很多的UI组件的位置可以使用一个简单的方程等式得到解决: Object1.pro...
阅读全文
摘要:1.问题:你希望能够在UI 组建中直接能够显示富文本,而不是针对每一种格式创建一个单独的UI组件。例如,你想要在一个UILabel 中显示一个句子,该句子中只有一个单词是粗体。2.富文本是很好的东西!许多程序员需要在UI 组建中的一行文本内显示各种样式的字符串。构造属性字符串的最好方法就是使用NSM...
阅读全文
摘要:问题:通过text field或text view等UI组件,可以让用户通过键盘输入文本内容,不过当键盘显示在屏幕上时,会遮挡住部分UI,如何避免遮挡发生呢?1.iOS 发布了很多关于屏幕上键盘的通知。下面列出了这些通知及相关介绍:UIKeyboardWillShowNotification 当键...
阅读全文
摘要:1.问题你想在屏幕上显示一个进度条来述某任务的进度。例如,从 URL 下载一个文件的进 度条。2.进度视图是 UIProgressView 的一个实例对象,并被此类设计好的初始化器初始化,使用 initWithProgressViewStyle:这个方法。这个方法的参数可以指定进度条的风格。这个...
阅读全文
摘要:UISplitViewControllerUIPageViewControllerUIPopoverController
阅读全文
摘要:将网页视图放置在 UI 上并使用其中的一个加载方法:loadData:MIMEType:textEncodingName:baseURL:加载一个 NSData 的实例到页面视图(web view)上。loadHTMLString:baseURL:这个方法是加载 NSString 的一个实例到页面视...
阅读全文
摘要:1.contentSize 属性//简单创建UIScrollViewUIImage *imageToLoad = [UIImage imageNamed:@"MacBookAir.png"]; self.myImageView = [[UIImageView alloc] initWithImage...
阅读全文
摘要:Objective-C 中 #import 和 #include 的区别预编译指令Objective-C:#importC,C++:#include#import由gcc编译器支持在 Objective-C 中,#import 被当成 #include 指令的改良版本来使用。除此之外,#import...
阅读全文
摘要:以图片的实际宽和高显示在屏幕上。UIImage *macBookAir = [UIImage imageNamed:@"MacBookAir.png"]; //initWithImage:self.myImageView = [[UIImageView alloc] initWithImage:ma...
阅读全文
摘要:- (void) buttonIsPressed:(UIButton *)paramSender{ NSLog(@"Button is pressed.");}- (void) buttonIsTapped:(UIButton *)paramSender{ NSLog(@"Button is tap...
阅读全文
摘要:问题:使用 UITextView 显示多行文本创建一个简单的TextView:- (void)viewDidLoad{[super viewDidLoad];self.view.backgroundColor = [UIColor whiteColor];self.myTextView = [[UI...
阅读全文
摘要:代码:1.简单地添加了一个textFieldCGRect textFieldFrame = CGRectMake(0, 0, 200, 31); _myTextField = [[UITextField alloc]initWithFrame:textFieldFrame]; _myTe...
阅读全文
摘要:常用属性:numberOfLines =0时自动换行myLabel.adjustsFontSizeToFitWidth = YESmyLabel.font = [UIFont boldSystemFontOfSize:14.0f];shadowColor 这个属性是 UIColor 类型,如属性...
阅读全文
摘要:假设有两个视图控制器,它们的分别为 FirstViewController 和 SecondViewControlller。 现在到 app delegate 中定义视图控制器和标签栏。代码如下:.h:#import #import "FirstViewController.h"#import "S...
阅读全文
摘要:问题:希望将按钮添加到导航栏中1.导航栏属于 UINavigationBar 类,你可以再任何时候创建它,并将它添加到任意的 view 中。2.创建一个导航按钮,须要做一下工作: 创建一个 UIBarButtonItem 实例。 使用视图控制器的 navigationItem 属性将按钮添加到视...
阅读全文
摘要:问题:在导航控制器的当前视图中的标题中用一张图片代替文本使用导航项目中视图控制器中 navigation item 的 titleView 属性:- (void)viewDidLoad{[super viewDidLoad];self.view.backgroundColor = [UIColor ...
阅读全文
摘要:- (void) goBack{/* Get the current array of View Controllers */NSArray *currentControllers = self.navigationController.viewControllers; /* Create a mu...
阅读全文
摘要:问题:你想在程序中切换不同的视图 对于 iOS 开发苹果的策略是使用 MVC,即模型-视图-控制器。视图是展现给用户的东 西;模型是 APP 管理的数据,也是 APP 引擎的另一种叫法;控制器是连接模型和视图的桥 梁。控制器-此处指视图控制器,管理视图和模型之间的关系。为什么视图不能代替它呢? 答...
阅读全文
摘要:导航控制器,它允许你 push 视图控制器到一个栈中,并可以将视图控制器从栈中 pop 出来,在栈顶的视图控制器是 top 视图控制器,用户可以看到这个视图控制器。也只有 top 视图控制器能被用户看到,可以通过将其 pop 出,或者 push 另外一个视图控制器到栈中进行改变。 使用导航控制...
阅读全文
摘要:问题:创建一个 UIActivityViewController 类的实例对象,通过该类进行内容分享在 iOS 中分享数据是很容易的。你需要做的就是使用 UIActivityViewController 类的方法 initWithActivityItems:applicationActivities...
阅读全文
摘要:问题:创建一个 UIActivityViewController 类的实例对象,通过该类进行内容分享在 iOS 中分享数据是很容易的。你需要做的就是使用 UIActivityViewController 类的方法 initWithActivityItems:applicationActivities...
阅读全文
摘要:问题:已在 UI 界面中放置了一个或者两个分段控件,现在你希望对分段控件进行定制,以 与你的 UI 风格一致。tintColor属性,通过该属性,可以修改分段控件的tint colorself.segmentedControl.tintColor = [UIColor redColor]; }你还可...
阅读全文
摘要:问题:想显示给用户一些简洁、易理解的选项,用户可以选择其中的一项。先创建一个 UISegmentedControl 实例来初始化一个该控件 :- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup aft...
阅读全文
摘要:问题:用过了 UISlider 的默认显示方式,现在想要定制一下它的外观minimumTrackTintColor:这个属性改变 slider 中最小值 track view 的 tint colorthumbTintColor:这个属性是修改 slider 的 thumb view 的 tint ...
阅读全文
摘要:允许用户用一个简单直观的界面来在一个范围内选择一个值。现在在 viewDidLoad 方法中创建滑动条。在这段代码中,我们想要滑动条的滑块在 0 到 100 之间滑动,而且默认的位置为 50.- (void)viewDidLoad { [super viewDidLoad]; // Do...
阅读全文
摘要:在程序中给用户供一个体验很好的页面用来选择日期和时间。//UIDatePicker _myDatePicker = [[UIDatePicker alloc]init]; _myDatePicker.center = self.view.center; [_myDatePick...
阅读全文
摘要:问题:想让用户在程序中从一个列表中选择数据。通过 Picker view 可以显示一系列的值给用户,并且可以让用户选择其中一个。iPhone 中 Clock 程序里面的时间选择就是一个非常好的例子.h文件:#import @interface ViewController : UIViewContr...
阅读全文
摘要:1.UISwitch类提供一个开/关的用户控制.- (void)viewDidLoad { [super viewDidLoad]; self.mySwitch = [[UISwitch alloc]initWithFrame:CGRectMake(100, 100, 0, 0)...
阅读全文
摘要:1.使用示视图的最好方法,当然是使用特定的初始化方法:UIAlertView *alertVeiw = [[UIAlertView alloc]initWithTitle:@"Title" me...
阅读全文
摘要:所有的 iOS 应用程序基本都使用 Model-View-Controller,或称为 MVC 架构。从架构角 度来看,Model,view 和 controller 是一个 iOS 应用程序的 3 个主要组件:Model 是应用程序的核心。它负责计算和创建一个虚拟的世界,即使没有 view 和 c...
阅读全文
摘要:1.问题 想监听使用NSNotification广播的系统和自定义通知.2.讨论 开始收听通知时,使用通知中心的 addObserver:selector:name:object:实例方法中对象参数指定源对象(广播)。 对每个参数的简单描述: addObserver :接收通知的对象 (观察...
阅读全文
摘要:问题: 想在APP中发布一条通知,同时允许其他对象接收通知并根据你广播的内容采取相应的行动.讨论: 通知中心是通知对象的派送中心,例如,在用户使用 App 时如果键盘显示出来了,iOS 会发送一条通知到你的应用,程序中的任何对象都可以通过将自己添加到通知中心,作为一个观察者,来监听此通知。当对象...
阅读全文
摘要:问题: 在main bundle中可能还会有单独的bundle,这些单独的bundle中也会包含图片或者其它的一些资源,那么如何访问其中的资源呢?方案: 获取除了主文件包之外其他文件包内的文件时最好使用 NSBundle 中 pathForResource:ofType:inDirectory:...
阅读全文
摘要:问题: 你已经在 Xcode 中添加了一些资源(例如图片),现在,在运行时,你希望访问这些资源。方法: 使用 NSBundle 类中的 mainBundle 类方法来访问主文件包。一旦这个步骤完成,使用 pathForRecource: ofType:方法从主文件包中获得具体资源的路径,路径明确...
阅读全文
摘要:问题: 你想把资源按照层次结构分组并可在运行时能够随时调用。方法: 按照下面的步骤成功创建一个程序包: 1、在磁盘中创建给一个根文件夹,也是之后的程序包;例如,我们把这个文件夹命名为 Resources。 2、在 Resources 文件夹下创建 3 个命名为 Images、Videos 和...
阅读全文
摘要:1.数组块方法遍历: NSArray *myArray = @[@"string 2",@"string 4",@"string 1",@"string 3"]; [myArray enumerateObjectsUsingBlock:^(__strong id obj, NSUInt...
阅读全文
摘要:问题: 你正在使用最新版的 SDK 中的一些类,但是你不确定这些类是否能在你程序运行的设 备中可用,因为有可能你部署的目标设备要比最新版 SDK 早。方案: 用NSClassFromString函数. 传入类的名称字符串符。若是返回值为空(nil),则表示这个类无法在这台设备上使用;反之,这个...
阅读全文
摘要:问题: 在最新的SDK上进行开发,但是你希望对运行旧版本的设备也支持. 程序必须不断检查实例或类方法是否存在,否则程序会是脆弱的,因为部署的装置的 SDK 版本,不一定是最新的,也许方法会不存在。讨论: 有两个关于iOS SDK的概念: Base SDK(基底SDK):这个 SDK 是用来编...
阅读全文
摘要:你希望确保某个类实现一组确定的方法或者属性协议是一个声明某些方法及属性并储存在实体文档。(通常延伸档名是.h)任何实践协议的对象,都必须实践协议供的方法及属性(可在协议中指定是必须或可选)。协议就像是一些规范,实践协议的类必须遵守这些规范。例如:#import @protocol PersonP...
阅读全文
浙公网安备 33010602011771号