顯示具有 iOS 標籤的文章。 顯示所有文章
顯示具有 iOS 標籤的文章。 顯示所有文章

2017年5月23日 星期二

Visual Studio 2017 for Mac

Visual Studio for Mac 是 Visual Studio 系列的新成員,可讓 macOS 上的開發人員使用 Xamarin 和 .NET Core 來建置行動裝置、Web 和雲端的應用程式,以及使用 Unity 來建置遊戲。

Visual Studio 2017 for Mac Download

Xamarin

Xamarin 的第一級支援可讓您開發 Android、macOS、iOS、tvOS 和 watchOS 的豐富原生體驗。 Xamarin.Forms 跨平台應用程式可協助您在 Android、iOS 與 macOS 之間共用 XAML UI 程式碼,而不限制原生功能的存取權。
包括:
  • 建置、部署、偵錯和程式碼剖析。
  • iOS 和 Android 的拖放 UI 設計工具。
  • Xamarin Forms 的即時預覽。
  • .NET Standard 相容的架構。
  • 原生 API 的繫結。

多平台應用程式範本

多平台 Xamarin.Forms 應用程式和原生應用程式專案範本現在提供快速的方法,讓您建立多平台行動應用程式和其雲端後端。

2012年11月20日 星期二

iOS 6版本與之前版本差異

1、4英寸屏幕

舊的應用程式要與4英寸屏幕進行匹配,需要準備一張Default-568h@2x.png圖片,系統根據是否有此資源來識別是否支持4英寸屏幕。

至於其他資源不允許使用xxx-568h.jpg此格式來匹配屏幕,需要使用程式碼對屏幕進行檢測來分別進行匹配。

2、UINavigationViewController的變化

該類的initWithRootViewController在之前的版本是最終會使用到 init 方法的。因此在繼承UINavigationViewController時,直接在重寫 init 方法來初始化物件所需屬性即可。

但是在iOS6上是不會使用init方法,因此需要注意。

3、CFRelease的變化

在之前版本中如果CFRelease傳入 nil 是被允許的,這也符合我們傳入 nil 物件不會對我們的程序造成影響,

但是在iOS6中,這樣的寫法直接就當機了,所以程式碼中還是需要判斷一下是否為 nil 才是安全的做法。

4、UIPickerView的變化

在之前版本中可以使用
[_pickerView selectRow:-1 inComponent:0 animated:YES]; 。

但在iOS6中會導致當機。

5、UIActivityIndi​​catorView的變化

在之前的版本中假如調用了startAnimating方法之後,只要把UIActivityIndi​​catorView添加到子視圖中就會顯示加載動畫,

但在iOS6中只要移出顯示隊列則會停止動畫,特別在UITableViewCell中加入此控件,只要滾動幾下Cell的UIActivityIndi​​catorView就消失了,為解決此問題可以在加入顯示隊列時根據isAnimating屬性來判斷是否執行動畫,如果沒有則重新調用一下startAnimating方法。

6、通訊錄列表獲取差異

自iOS6.0後獲取通訊錄列表需要詢問用戶,經過用戶同意後才可以獲取通訊錄用戶列表。

而且ABAddressBookRef的初始化工作也由ABAddressBookCreate函數轉變為ABAddressBookCreateWithOptions函數。

下面程式碼是獲取通訊錄用戶列表的方法,相容之前的版本。
ABAddressBookRef addressBook = nil;
if ([[UIDevice currentDevice].systemVersion floatValue] >= 6.0)
{
addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
//等待同意後向下執行
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error)
{
dispatch_semaphore_signal(sema);
});
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
dispatch_release(sema);
} else {
addressBook = ABAddressBookCreate();
}
NSArray *personArray = (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook);



2012年11月16日 星期五

自定義 iOS UI 的案例

iOS UI Patterns 網站:

http://pttrns.com/

iOS 6 韌體

iOS 6 直接下載韌體更新,位置如下:

iPad Wi-Fi (3rd generation)
http://appldnld.apple.com/iOS6/Restore/041-3515.20120919.OYzOG/iPad3,1_6.0_10A403_Restore.ipsw

iPad Wi-Fi + Cellular (model for ATT)
http://appldnld.apple.com/iOS6/Restore/041-7163.20120919.19UEI/iPad3,3_6.0_10A403_Restore.ipsw

iPad Wi-Fi + Cellular (model for Verizon)
http://appldnld.apple.com/iOS6/Restore/041-7161.20120919.5CyjO/iPad3,2_6.0_10A403_Restore.ipsw

iPad 2 Wi-Fi (Rev A)
http://appldnld.apple.com/iOS6/Restore/041-2187.20120919.vmGkW/iPad2,4_6.0_10A403_Restore.ipsw

iPad 2 Wi-Fi
http://appldnld.apple.com/iOS6/Restore/041-0804.20120919.9SgHU/iPad2,1_6.0_10A403_Restore.ipsw

iPad 2 Wi-Fi + 3G (GSM)
http://appldnld.apple.com/iOS6/Restore/041-7165.20120919.eZTyh/iPad2,2_6.0_10A403_Restore.ipsw

iPad 2 Wi-Fi + 3G (CDMA)
http://appldnld.apple.com/iOS6/Restore/041-7167.20120919.y2ard/iPad2,3_6.0_10A403_Restore.ipsw

iPhone 4S
http://appldnld.apple.com/iOS6/Restore/041-7181.20120919.lEuOK/iPhone4,1_6.0_10A403_Restore.ipsw

iPhone 4 (GSM)
http://appldnld.apple.com/iOS6/Restore/041-7175.20120919.wvv7Y/iPhone3,1_6.0_10A403_Restore.ipsw

iPhone 4 (CDMA)
http://appldnld.apple.com/iOS6/Restore/041-7179.20120919.bDw4g/iPhone3,3_6.0_10A403_Restore.ipsw

iPhone 3GS
http://appldnld.apple.com/iOS6/Restore/041-7173.20120919.sDDMh/iPhone2,1_6.0_10A403_Restore.ipsw

iPod touch (4th generation)
http://appldnld.apple.com/iOS6/Restore/041-0807.20120919.soT6X/iPod4,1_6.0_10A403_Restore.ipsw