搜尋此網誌

2012年10月30日 星期二

善用 HttpResponseCache


之前寫 Android App 都要自己實作 Cache, 不管是圖片或者是API資料;
比如說: 打開程式後, 如果Local有Cache就先讀取Cache; 然後在暗地裡發送Request去更新圖片/API資料等… 當有新的, 直接複寫本地端的緩存, 然後 notify refresh. 而且還要防止Cache太多, 要定時刪除舊的資料….

遇到xcode app無法佈到模擬器上

這時候請先移除模擬器上之前所寫的程式
接著關閉模擬器
然後在xcode執行product->clearn
然後重新build


I've tried the following:
  1. Rebooting mac
  2. Deleting application from iPhone and rebooting iPhone (although my power button no longer works on my iPhone, so I had to run down the entire battery to try this)
  3. Cleaned project and rebuilt

2012年10月29日 星期一

MBProgressHUD 類似 progress Indicator


MBProgressHUD

MBProgressHUD is an iOS drop-in class that displays a translucent HUD with an indicator and/or labels while work is being done in a background thread. The HUD is meant as a replacement for the undocumented, private UIKit UIProgressHUD with some additional features.
   
   


https://github.com/jdg/MBProgressHUD

2012年10月24日 星期三

如何禁止切換TabBar(enable)


//如果不是自己的viewControll
UIViewController *controller =[self.storyboard instantiateViewControllerWithIdentifier@"tabbarView" ];
[controller.tabBarController setDelegate:self];

//禁止切換disable
self.tabBarController.tabBar.userInteractionEnabled=NO;

2012年10月21日 星期日

iOS的影片播放 MediaPlayer vs AVPlayer


在iOS開發上,如果遇到需要播放影片,如開機動畫…,我們很習慣地會使用MediaPlayer來播放影片,因為很方便使用,所以就一直使用下去。但是隨著客戶的要求越來越嚴苛,尤其是過場動畫或互動效果上的表現。所以如果在一些動畫中還挾帶影片一起運算,那勢必機器會跑不動。所以在iOS 4之後,我們可以使用AVPlayer這個類別來進行更細微的操作。
備註:
  • MediaPlayer的影片是放在UIView 裡面,而AVPlayer是放在AVPlayerLayer裡面,AVPlayerLayer是CALayer 的子類別。
  • 使用MediaPlayer前,要記得加入MediaPlayer.framework及#import <MediaPlayer/MediaPlayer.h>
  • 使用AVPlayer前,要記得加入AVFoundation.frameworkk及#import <AVFoundation/AVFoundation.h>
請參考以下的範例:

2012年10月12日 星期五

MPMoviePlayer 播放前的處理


這次為了處理有些影片無法播放
卻看不到player造成無法回到上一頁問題

之前因為使用MPMoviePlayerLoadStateDidChangeNotification來處理預載完畢後才加上player.view造成上面的情況
所以就改成先呈現player.View

但是必須要使用 MPMoviePlayerViewController 
因為 MPMoviePlayerController 在還沒可以播放前會是一片黑色

 MPMoviePlayerViewController *playerViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
    player=playerViewController.moviePlayer;

    
    //旋轉90
   // player.view.transform = CGAffineTransformMakeRotation(1.5707964);
    
    //設定影片比例的縮放、重複、控制列等參數
    player.fullscreen=YES;
    player.scalingMode = MPMovieScalingModeAspectFit;
    player.repeatMode = MPMovieRepeatModeNone;
    player.controlStyle =MPMovieControlStyleFullscreen;

    //使用Observer製作完成播放時要執行的動作
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(moviePlayBackDidFinish:)
                                                 name:MPMoviePlayerPlaybackDidFinishNotification
                                               object:player];

  //  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(moviePreloadDidFinish:) name:MPMoviePlayerLoadStateDidChangeNotification object:nil];
    
    //自動縮放符合畫面比例
    // player.view.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;

    //將影片加至主畫面上
//因為要橫轉所以高和寬對調
    [player.view setFrame:CGRectMake(0, 0, self.view.bounds.size.height, self.view.bounds.size.width)];
   //  NSLog(@"%f,%f",self.view.bounds.size.height,self.view.bounds.size.width);
    [self.view addSubview:player.view];
    [player play];

2012年10月10日 星期三

MPMoviePlayerViewController VS MPMoviePlayerController


老實說這篇文章轉貼過來後發現在
MPMoviePlayerViewController 這邊有問題
我還是得用addsubview才呈現的出來(也許是個人問題)

原文如下:

MPMoviePlayerViewController VS MPMoviePlayerController


MPMoviePlayerViewController
MPMoviePlayerController
版本支持
Available in iOS 3.2 and later.
Available in iOS 2.0 and later.(多数属性支持3.2)
大小
只支持全屏播放  如果addsubview 不支持横竖屏
可全屏也可自己设置frame
调用

dismissMoviePlayerViewControllerAnimated
addsubview:
属性
moviePlayer
[mMPVC. moviePlayer play];


BOOL shouldAutoplay
NSTimInterval initialPlaybackTime

NSTimeInterval duration
MPMovieControlStyle controlStyle

關於html資料 decode ,unescape

由於我需要取得JSON吐出來的HTML呈現在UIWebView但是發現在取得JSON不可以直接用HTML吐出來的資料


所以API資料需要先escape 將HTML tag符號換掉接著我需要在objective-c這邊將資料在unescape


做法如下先取得GTMNSString+HTML.hGTMNSString+HTML.m可由下列取得http://code.google.com/p/google-toolbox-for-mac/source/browse/trunk/Foundation/https://github.com/mwaterfall/MWFeedParser/tree/master/Classes

使用方式:
#import "GTMNSString+HTML.h"


NSString *str=@"aaaaa";
[str gtm_stringByUnescapingFromHTML]



2012年10月8日 星期一

MPMoviePlayerController 电影播放器—IOS开发


声明
欢迎转载,但是请尊重作者劳动成果,转载请保留此框内声明,谢谢。
文章出处:http://blog.csdn.net/iukey

MPMoviePlayerController 与AVAudioPlayer有点类似,前者播放视频,后者播放音频,不过也有很大不同,MPMoviePlayerController 可以直接通过远程URL初始化,而AVAudioPlayer则不可以。不过大体上用起来感觉差不多。废话少说进入体验。
格式支持:MOV、MP4、M4V、与3GP等格式,还支持多种音频格式。
首先你得引入 MediaPlayer.framework.然后在使用到MPMoviePlayerController 的文件中导入相应的头文件。

認識 UIWebView


  1. //設定網址字串  
  2. NSString *urlAddress = @"http://ithelp.ithome.com.tw/question/10056941";  
  3.   
  4. //建立一個NSURL物件  
  5. NSURL *url = [NSURL URLWithString:urlAddress];  
  6.   
  7. //建立一個NSURLRequest物件  
  8. NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];  
  9.   
  10. //建立一個UIWebView 物件  
  11. UIWebView *webView = [[UIWebView alloc] initWithFrame:[self.view frame]];  
  12.   
  13. //讓 UIWebView 連上NSURLRequest 物件所設定好的網址  
  14. [webView loadRequest:requestObj];  
  15.   
  16. //將 UIWebVeiw 物件加入到現有的 View 上  
  17. [self.view addSubview:webView];  
  18.   
  19. //釋放 UIWebView佔用的記憶體  
  20. [webView release];  

實現UItableViewCell單選按鈕標誌 例如勾選

self.tableView cellForRowAtIndexPath:indexPath].accessoryType = UITableViewCellAccessoryCheckmark;

詳細討論請看:
http://www.devdiv.com/iOS_iPhone-UITableViewCell%E5%AF%A6%E7%8F%BE%E5%96%AE%E9%81%B8%E6%95%88%E6%9E%9C-thread-131823-1-1.html

2012年10月3日 星期三

顯示&隱藏 Mac 隱藏檔案


[顯示隱藏檔案]

首先在終端機上貼上以下指令,貼上後按下 Return ▼
defaults write com.apple.finder AppleShowAllFiles TRUE

2012年10月1日 星期一

修改uiview backgroundColor


cell.moreView.backgroundColor = [UIColor colorWithRed:115.0f/255.0f green:137.0f/255.0f blue:166.0f/255.0f alpha:1.0f];

UIView 視覺效果:圓角、陰影、邊框、漸層光澤:


先建立一個 UIView 物件:
1
2
3
4
5
6
// 記得在 header 檔裡引入 QuartzCore
#import <QuartzCore/QuartzCore.h>

UIView *sampleView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 32, 32)];
sampleView.backgroundColor = [UIColor whiteColor]; // 把背景設成白色
// sampleView.backgroundColor = [UIColor clearColor]; // 透明背景

圓角

1
2
sampleView.layer.cornerRadius = 2.5; // 圓角的弧度
sampleView.layer.masksToBounds = YES;

陰影

1
2
3
4
sampleView.layer.shadowColor = [[UIColor blackColor] CGColor];
sampleView.layer.shadowOffset = CGSizeMake(3.0f, 3.0f); // [水平偏移, 垂直偏移]
sampleView.layer.shadowOpacity = 0.5f; // 0.0 ~ 1.0 的值
sampleView.layer.shadowRadius = 10.0f; // 陰影發散的程度

邊框

1
2
sampleView.layer.borderWidth = 1;
sampleView.layer.borderColor = [[UIColor blackColor] CGColor];

漸層光澤

1
2
3
4
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = sampleView.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor whiteColor] CGColor], (id)[[UIColor grayColor] CGColor], nil]; // 由上到下的漸層顏色
[sampleView.layer insertSublayer:gradient atIndex:0];