目前為了要相容 iOS 5 和 6 的旋轉,在原本的旋轉方法下,還要加入以下方法。
viewController.mm
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
//僅支援直式
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
-(NSUInteger)supportedInterfaceOrientations
{
//僅支援直式
return UIInterfaceOrientationMaskPortrait;
}
-(BOOL)shouldAutorotate
{
return YES;
}
以為解決了,結果在 AppDelegate.m 下用
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController];
self.window.rootviewcontroller = navigationController;
這下可好,完成不理之前的設定(僅支援直式),變成任意旋轉了@_@|||
查了查才發現 self.viewController 是 UIViewController,而被加入 UINavigationController ,旋轉設定並無法影響,解決方法有兩種:
1. 改 UIViewController 為 UINavigationController 的子類別
2. 直接在 AppDelegate.m 覆寫 supportedInterfaceOrientations 方法,如下所示:
@implementation UINavigationController (iOS6OrientationFix)
-(NSUInteger) supportedInterfaceOrientations
{
//被加入的 viewController 為最上層,故只取 topViewController
return [self.topViewController supportedInterfaceOrientations];
}
@end
參考來源:
http://stackoverflow.com/questions/12410031/ios-6-rotations-supportedinterfaceorientations-doesnt-work
http://stackoverflow.com/questions/12504464/ios-6-uitabbarcontroller-supported-orientation-with-current-uinavigation-control
好了,打完收工!
2012年12月23日 星期日
2012年9月27日 星期四
2012年9月3日 星期一
[AR] 想訂購一個窗戶嗎?
國外一間公司(VELUX)運用 AR 來展示商品的應用,主打商品是"窗戶",讓使用者可直接在家中透過相機即可將各式各樣的窗戶選擇來搭配,並可進一步分享至 facebook 與好友討論,最後當然可以打開 google map 查詢販售地點,直接打電話去訂購等等...
2012年8月31日 星期五
[iOS] 發送 Local Notification 方法小記
最近剛研究完 Apple Push Notification Service (APNS) 來發送訊息給 user device。
有空再來整理整個設定流程,今天同事討論到也有直接本機發送的方式,上網找了一下寫個函式記錄以方便使用。
- (void)pushLocalNotification:(NSDate *)date
{
//直接抓取目前時間後1分鐘
}
有空再來整理整個設定流程,今天同事討論到也有直接本機發送的方式,上網找了一下寫個函式記錄以方便使用。
- (void)pushLocalNotification:(NSDate *)date
{
//直接抓取目前時間後1分鐘
//NSDate *after = [NSDate dateWithTimeIntervalSinceNow:(1 * 60)];
//若有舊訊息則把它刪除
NSArray *oldNotificatoins = [application scheduledLocalNotifications];
if([oldNotificatoins count] > 0)
[application cancelAllLocalNotifications];
//建立一個訊息來發送
UILocalNotification *alarm = [[[UILocalNotification alloc] init] autorelease];
if(alarm)
{
alarm.fireDate = date;
alarm.timeZone = [NSTimeZone defaultTimeZone];
alarm.repeatInterval = 0;
alarm.soundName = @"beep-beep.caf";
alarm.alertBody = @"test local notification message!";
[application scheduleLocalNotification:alarm];
}
}
2012年8月30日 星期四
[iOS] 將輸入框 (UITextField) 收起的方法
每次使用 UITextField 來讓使用者輸入文字,但在收起來這件事總是不少麻煩。
記錄一下幾個收起的方法:
1.實作 UITextFieldDelegate 的函式在按下確定 (Return、Done) 後收起
2.手指點擊畫面後收起
記錄一下幾個收起的方法:
1.實作 UITextFieldDelegate 的函式在按下確定 (Return、Done) 後收起
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
2.手指點擊畫面後收起
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleBackgroundTap:)];
tapRecognizer.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:tapRecognizer];
- (void)handleBackgroundTap:(UITapGestureRecognizer *)sender
{
[textField resignFirstResponder];
}
2012年8月28日 星期二
[iOS] 內建 UIAlertView 顯示輸入框的方法
常常使用 UIAlertView 來顯示一些告知使用者訊息的功能,但在登入或需要使用者輸入一些欄位時(ex:密碼)可用以下的方法來呈現:
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"title" message:@"" delegate:self cancelButtonTitle:@"Yes" otherButtonTitles:nil];
[alertView setAlertViewStyle:UIAlertViewStylePlainTextInput];
UITextField *textField = [alertView textFieldAtIndex:0];
[alertView show];
紅色字的部份可參考以下的列舉使用。
typedef enum {
UIAlertViewStyleDefault = 0,
UIAlertViewStyleSecureTextInput,
UIAlertViewStylePlainTextInput,
UIAlertViewStyleLoginAndPasswordInput
} UIAlertViewStyle;
2012年8月23日 星期四
[iOS] 判斷 app 是第一次打開或更新版本後第一次打開的方法
最近在找怎麼判斷 app 是第一次打開或更新版本後第一次打開的方法,這個可用來製作首次操作教學的提示,網路(參考連結)上有好心人教學,程式碼如下:
- (BOOL)isFirstLoad
{
NSString *currentVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *lastRunVersion = [defaults objectForKey:LAST_RUN_VERSION_KEY];
if(!lastRunVersion)
{
[defaults setObject:currentVersion forKey:LAST_RUN_VERSION_KEY];
NSLog(@"第一次打開 App");
return YES;
}
else if (![lastRunVersion isEqualToString:currentVersion])
{
[defaults setObject:currentVersion forKey:LAST_RUN_VERSION_KEY];
NSLog(@"更新版本後第一次打開 App");
return YES;
}
//記得一定要呼叫此函式才會永久儲存
[defaults synchronize];
return NO;
}
2012年8月16日 星期四
[iOS] 使用 UIActionSheet 時,取消按鈕感應範圍小記
在使用 UIActionSheet 時,發現取消按鈕的感應範圍整個偏上一點。
拜讀 google 大神後,從 連結 中找到了解答,原來是有使用 UITabBarController 的緣故,因此要改用 [UIApplication sharedApplication].keyWindow 來取代 self.view 即可。
[Mac] Firefox 使用內建字典外掛
在 safari 有內建功能可以快速打開字典查詢,沒想到 firefox 無此功能,網路上找到一個外掛使用後就可以啦!
就叫 Look Up in Dictionary
就叫 Look Up in Dictionary
[Mac] Lion 下使用網路郵局之 java 設定
最近開通了網路郵局後,發現用 safari 打開網頁後都出現電腦尚未安裝 java 的怪現象。
我明明就有裝了說,結果發現原來要打開外掛才行,然後重開 safari 就大功告成。
來個 java 測試網頁
我明明就有裝了說,結果發現原來要打開外掛才行,然後重開 safari 就大功告成。
來個 java 測試網頁
[iOS] 設定多國語系無法正常顯示小記
這陣子忙著寫第一個 iPhone 版本的 app,終於要上架了!(撒花)
雖然一開始鎖定繁中語系,不過 app 的主要市場在北美,
因此就要做個多國語系啦,在設定時,很多教學都提到直接使用 NSLocalizedString 函式即可。但我發現一直無法正常顯示,結果最近在一篇文章中提到,NSLocalizedString 函式預設是依照 Localizable.strings 檔案去設定,但若檔名有自行更改...就不會理你了。
因此,若自行更改檔名,就要改用 NSLocalizedStringFromTable(@”title”,@”檔名”, nil) 函式來解決,打完收工。
雖然一開始鎖定繁中語系,不過 app 的主要市場在北美,
因此就要做個多國語系啦,在設定時,很多教學都提到直接使用 NSLocalizedString 函式即可。但我發現一直無法正常顯示,結果最近在一篇文章中提到,NSLocalizedString 函式預設是依照 Localizable.strings 檔案去設定,但若檔名有自行更改...就不會理你了。
因此,若自行更改檔名,就要改用 NSLocalizedStringFromTable(@”title”,@”檔名”, nil) 函式來解決,打完收工。
2012年6月25日 星期一
[iOS] 設定 UITabBar 隱藏
隱藏 - 在 [self.navigationController pushViewController:animated:] 之前設定
self.hidesBottomBarWhenPushed = YES;
顯示 - (void)viewWillDisappear:(BOOL)animated
self.hidesBottomBarWhenPushed = NO;
[iOS] 設定 UINavigationBar 透明度
打開 - (void)viewWillAppear:(BOOL)animated
self.navigationController.navigationBar.translucent = YES;
self.navigationController.navigationBar.alpha = 0.7f;
關閉 - (void)viewWillDisappear:(BOOL)animated
self.navigationController.navigationBar.translucent = NO;
self.navigationController.navigationBar.alpha = 1.0f;
2012年5月5日 星期六
[iOS] NSLog 印不出中文字
發現在 xcode 更新後,nslog 原本印中文好好的卻出現什麼屁都印不出還連顯示都沒有。
網路找了一下才發現,原來 debugger 被改成 lldb 的緣故,只要改回 gdb 就一切良好!
網路找了一下才發現,原來 debugger 被改成 lldb 的緣故,只要改回 gdb 就一切良好!
2012年1月13日 星期五
Manga Director 小記
話說從去年中接手這個系統後,也做了半年多(中間1個月還跑去成功嶺受訓)。
有了點小成果,預計農曆年後上線給使用者玩看看,做個簡介記錄一下:
2. 匯入各大網路相簿(無名、痞客邦、Flickr、隨意窩Xuite、Picasa)之照片素材。
3. 自動為匯入之照片權重評分(依據臉部辨識、連續拍攝、ISO等)。
4. 自動依需求產生漫畫形式之繪本。
5. 簡易編輯功能(畫格、文字、小圖示)。
6. 發佈至一般網頁或分享至 Facebook 塗鴨牆、Twitter 及 Plurk。
訂閱:
文章 (Atom)