搜尋此網誌

2012年7月26日 星期四

(IOS)使用 MPMoviePlayerController 播放影片



 

在很多應用程式的開頭常常會看到使用影片來播放動畫或是該製作群的 Logo 等,其實這些影片就是透過 MPMoviePlayerController 來進行播放,至於要如何實做,請看下列程式碼示範。(View-based Template)

首先別忘了把函式庫的標頭檔和 Framework 加到專案中,Framework 加入的方法可以參考 Xcode 4 新增 Framework 的方法ㄧ文。

(IOS)動態調整 UITableViewCell 的高度

轉貼:http://gibuloto.com/blog/uitableviewcell-auto-height/


動態調整 UITableViewCell 的高度假設有一個這樣的 custom UITableViewCell:


因為評論的內容可能有好幾行,高度不一定,所以要做以下的處理:
in CommentCell.m

(IOS)深入浅出 iOS 之生命周期


深入浅出 iOS 之生命周期
罗朝辉(http://blog.csdn.net/kesalin) 
转载请注明出处
iOS应用程序的生命周期相比 Android 应用程序的生命周期来说,没那么简明易懂,但是也并不复杂。iOS应用程序的生命周期又根据系统是否支持多线程分为两种:
不支持多线程的iOS4之前的系统以及支持多线程的iOS4及其之后的系统。

iOS4 之前系统,app的生命周期图如下所示:
感谢 oliver@drobnik.com 提供如错详细的图,并以cc许可发布。

(IOS)iOS中永久保存用户数据的两个地方


永久保存用户设置以及数据的两个地方
罗朝辉(http://blog.csdn.net/kesalin)
转载请注明出处

要想将用户数据或设置永久保存起来,不受 app 更新重新安装的影响,我们只能将这写数据保存在 userDefaults 中或 Documents 目录下,这两个地方在官方文档中得到明确的支持。

文档中如是说:
<Application_Home>/Documents/
您应该将所有的应用程序数据文件写入到这个目录下。这个目录用于存储用户数据或其它应该定期备份的信息。有关如何取得这个目录路径的信息,请参见“获取应用程序目录的路径”部分。
iTunes会备份这个目录的内容。
<Application_Home>/Library/Preferences
这个目录包含应用程序的偏好设置文件。您不应该直接创建偏好设置文件,而是应该使用NSUserDefaults类或CFPreferences API来取得和设置应用程序的偏好,详情请参见“添加Settings程序包”部分。
iTunes会备份这个目录的内容。
其中, documents 目录可以用如下代码获得:
NSString *localPaths = NSHomeDirectory();
localPaths = [localPaths stringByAppendingPathComponent:@"Documents"];

(JAVA)判斷是否為數字

public static boolean isNumeric(String str){ 
try { 
Integer.parseInt(str); 
return true; 
} catch (NumberFormatException e) { 
// TODO Auto-generated catch block 
return false; 
} 
}

(IOS)深入浅出 Cocoa 之多线程 NSThread


深入浅出 Cocoa 之多线程 NSThread
罗朝辉(http://blog.csdn.net/kesalin
CC 许可,转载请注明出处

iOS 支持多个层次的多线程编程,层次越高的抽象程度越高,使用起来也越方便,也是苹果最推荐使用的方法。下面根据抽象层次从低到高依次列出iOS所支持的多线程编程范式:
1, Thread;
2, Cocoa operations;
3, Grand Central Dispatch (GCD) (iOS4 才开始支持)

下面简要说明这三种不同范式:

(IOS)tableView 自動加載 2

討論區:http://www.cocoachina.com/bbs/read.php?tid=59163&page=1

http://www.cocoachina.com/bbs/job.php?action=download&aid=33380好範例

(IOS)教學網站


iphone&ipad - 张智清 - 博客园
http://www.cnblogs.com/lovecode/category/332408.html



羅朝輝(飄飄白雲)
http://blog.csdn.net/kesalin


科學的愛情
http://gibuloto.com/


Farnace
http://furnacedigital.blogspot.tw/

(IOS)客制化UITableViewCell 2


UITableView的强大更多程度上来自于可以任意自定义UITableViewCell单元格。通常,UITableView中的Cell是动态的,在使用过程中,会创建一个Cell池,根据每个cell的高度(即tableView:heightForRowAtIndexPath:返回值),以及屏幕高度计算屏幕中可显示几个cell。而进行自定义TableViewCell无非是采用代码实现或采用IB编辑nib文件来实现两种方式,本文主要收集代码的方式实现各种cell自定义。

如何动态调整Cell高度

(IOS)關於NSMutableArray


1.如何判断一个数组为空

NSMutableArray *list;
if (list && [list count] >0 )

=================



(IOS)客制化UITableViewCell


自定一個自已的UITableViewCell,於是在iCodeBlog找到了一篇文章"Custom UITableViewCell Using Interface Builder",上面還附有影片,可以很清楚的了解每一個步驟。


1.首先,我們先建立一個tableViewController和他的xib檔,並記得要設定section數量和列數量。
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 1;
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
return 10;
}

2.設定完成之後,新建一個Object-C class "yourStyleCell.msubclass選項選UITableViewCell,並建立一個xib檔,
3.接下來我們使用Interface Builder,把原本的view刪除,從LibraryUITableViewCell拉進來,並且設計自已想要的樣式,然後把這個xib檔的類別設定為"yourStyleCell"
4.接下來我們在"yourStyleCell"類別中建立所需要的IBOutlet並且和xib檔做link
5.最後我們回到tableViewController.h檔中,import剛剛建立的"yourStyleCell.h"檔,
如果有變更cell的高度,請記得在tableViewControllertable也要同樣變更row的高度

接下來我們要對下面這個function進行修改
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath {
static NSString *CellIdentifier = @"yourStyleCell";//這是我們在yourStyleCell.xib檔中對cell進行的定義值,
yourStyleCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
//初始化cell
if (cell == nil)
{
NSArray *nibObjs = [[NSBundle mainBundleloadNibNamed:@"yourStyleCell" owner:nil options:nil];
for ( id currentObj in nibObjs)
{
if ([currentObj isKindOfClass:[ yourtStyleCell class]])
{
cell = ( yourStyleCell *)currentObj;
}
}
}
// 定義cell的內容
NSInteger row = [indexPath row];//get row number
// 如果是我們有一個Label,名稱為Name,我們可以這樣設定
[[cell NamesetText:@"Name"];
// 如果是我們有一個UIImageView,名稱為image,我們可以這樣設定
[[cell imagesetImage:[UIImage imageNamed:@"yourImageFile.png"]];
return cell;
}


這裡有要注意的在建立yourStyleCell時候關聯要注意,影片中最後才發現哪裡錯了
另外如果要調整高度記得要調整TableView並不是針對tableViewCell

(IOS)NSRange和NSString


NSRange的定義
1
2
3
4
5
typedef struct _NSRange
{
  NSUInteger location;
  NSUInteger length;
} NSRange;
NSRange是一个结构体,其中location是一个以0为开始的index,length是表示对象的长度。他们都是NSUInteger类型。 而NSUInteger类型的定義如下:
1
2
3
4
5
#if __LP64__ || TARGET_OS_EMBEDDED || TARGET_OS_IPHONE || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef unsigned long NSUInteger;
#else
typedef unsigned int NSUInteger;
#endif
例子:
下面这个例子,将输出IPA
1
2
3
4
5
6
7
8
9
NSString *homebrew = @"Imperial India Pale Ale (IPA)";
 
// Starting at position 25, get 3 characters
NSRange range = NSMakeRange (25, 3);
 
// This would also work:
// NSRange range = {25, 3};
 
NSLog (@"Beer shortname: %@", [homebrew substringWithRange:range]);
搜索字符串:
1
2
3
4
5
6
NSString *homebrew = @"Imperial India Pale Ale (IPA)";
NSRange range = [homebrew rangeOfString:@"IPA"];
 
// Did we find the string "IPA" ?
if (range.length > 0)
  NSLog(@"Range is: %@", NSStringFromRange(range));
上面的程序将输出Range is: {25, 3}。NSStringFromRange()方法,将一个NSRange返回一个NSString。而另外一个函数NSRangeFromString()则是将NSString转换为NSRange
下面这个例子将从后向前反向搜索字符串:
1
2
3
4
5
6
7
8
NSString *homebrew = @"Imperial India Pale Ale (IPA)";
 
// Search for the "ia" starting at the end of string
NSRange range = [homebrew rangeOfString:@"ia" options:NSBackwardsSearch];
 
// What did we find
if (range.length > 0)
  NSLog(@"Range is: %@", NSStringFromRange(range));
上面的程序将输出:Range is: {12, 2}
Objective-C中没有正则表达式,如果你想使用更复杂的字符串匹配,可以使用这个类库RegexKitLite。它提供了完整的正则表达式实现。
1 Comment : more...

使用NSRange获取范围

by  on 十.19, 2009, under Mac
如果你要获取一个字符串或者一个数组中的一个子集,那么使用NSRange会很方便的定义这个子集。
NSRange定义
1
2
3
4
Declaration: typedef struct _NSRange {
   NSUInteger location;
   NSUInteger length;
} NSRange;
创建NSRange的方法定义
1
2
3
4
Declaration: NSRange NSMakeRange (
   NSUInteger loc,
   NSUInteger len
);
例如获取一个数组的一个子集:
1
2
        NSRange range = NSMakeRange(0, 5); 
 NSArray *subArray = [self.states subarrayWithRange:range];
这样就获得了这个数组中0开始的5个元素的子集。