ImageView的縮放
- Scale to Fill (預設):圖像的寬高比會隨著縮放改變.
- Aspect Fit:圖像的寬高比會保持固定. 不過可能會在圖像的兩旁留下空白
- Aspect Fill:圖會等比例縮放來填滿視圖尺寸, 因為是等比例所以有些部分可能無法顯示
如果另外有勾選Clip SubView
可以避免圖像延伸到其他的視圖區域(ex. TableView…)
Content Hugging Priority
Stack View依靠這個優先權來決定是否應該將Field 標籤或是Value標籤延伸, 有較高優先權的視圖會有較高的抵抗順序, 將會維持原來的大小.
自訂表格視圖外觀
// Change the color of the table view
tableView.backgroundColor = UIColor(red: 240.0/255.0, green: 240.0/255.0, blue: 240.0/255.0, alpha: 0.2)
// Remove the separators of the empty rows
tableView.tableFooterView = UIView(frame: CGRectZero)
// Change the color of the separator
tableView.separatorColor = UIColor(red: 240.0/255.0, green: 240.0/255.0, blue: 240.0/255.0, alpha: 0.8)
// Set the title of the navigation bar
title = restaurant.name
有內容的cell顏色還是白色的
cell.backgroundColor = UIColor.clearColor()
自定導覽列的外觀
UIAppearance讓開發者可以去自訂大部分UIKit元件的外觀, 包含整個應用程式的導覽列.
ex. UINavigationBar.appearance()
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
UINavigationBar.appearance().barTintColor = UIColor(red: 242.0/255.0, green: 116.0/255.0, blue: 119.0/255.0, alpha: 1.0)
UINavigationBar.appearance().tintColor = UIColor.whiteColor()
if let barFont = UIFont(name: "Avenir-Light", size: 24.0) {
UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor(), NSFontAttributeName:barFont]
}
// Change the status bar's appearance
UIApplication.sharedApplication().statusBarStyle = .LightContent
return true
}
AppDelegate就像是應用程式的進入點, 這個類別是由Xcode的在專案建立時產生的. 如果想變更的東西是關係到整個應用程式的話, 通常會將自訂的程式放在這裡.
// Remove the title of the back button
navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .Plain, target: nil, action: nil)
在iOS8中, Apple可以讓你用滑動或是點選來隱藏導覽列. 勾選On Swipe
再利用以下的code關掉它
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
navigationController?.hidesBarsOnSwipe = true
}
因為這功能是針對整個應用程式的導覽列, 針對不想被隱藏導覽列的部分可以這樣
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
navigationController?.hidesBarsOnSwipe = false
navigationController?.setNavigationBarHidden(false, animated: true)
}
Cell的自適應性跟動態調整
前提:如果不對Cell進行Auto Layout的話就無法使用 Self Sizing Cell.
第一行為設定Cell估算的列高
第二行是將rowHeight屬性改為UITableViewAutomaticDimension
tableView.estimatedRowHeight = 36.0
tableView.rowHeight = UITableViewAutomaticDimension
最後一個步驟是將Label的Lines值設定為0
背景圖案加上模糊特效
流程為:建立一個UIVisualEffectView物件加上模糊特效, 接著加上一個視覺特效視圖(Visual effect view) 至背景圖像視圖. UIBlurEffect 提供三種不同的樣式:Dark, Light, ExtraLight.
override func viewDidLoad() {
super.viewDidLoad()
let blurEffect = UIBlurEffect(style: .Dark)
let blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.frame = view.bounds
backgroundImageView.addSubview(blurEffectView)
}
UIView Animation
在iOS中, 只需要提供動畫的起始與終止狀態, UIView就會幫忙建立動畫. 也提供變形的函數, 讓你可以縮放, 旋轉與移動圖.
縮放視圖的方式是建立一個CGAffineTransformMakeScale, 並設定UIView物件的transform屬性.
ratingStackView.transform = CGAffineTransformMakeScale(0.0, 0.0)
當他第一次載入時, 堆疊視圖縮小:
override func viewDidAppear(animated: Bool) {
UIView.animateWithDuration(0.4, delay: 0.0, options: [], animations: {
self.ratingStackView.transform = CGAffineTransformIdentity
}, completion: nil)
}
在視圖載入後, 就將動畫載入進來, 因此我們需要一個animation block至viewDidAppear方法內. 動畫持續時間0.4秒. CGAffineTransformIdentity
是重新設定一個View至原來大小以及位置的常數.
Spring Animation
Damping: 控制當動畫來到終止狀態時彈性的阻力(0 -> 1)
usingSpringWithDamping: 指定了初始的彈性速度.
UIView.animateWithDuration(0.5, delay: 0.0, usingSpringWithDamping:0.3, initialSpringVelocity: 0.5, options: [], animations: {
self.ratingStackView.transform = CGAffineTransformIdentity
}, completion: nil)
Slide-Up Animation
對於向上滑動的視圖, 我們先將堆疊視圖移開畫面再將它移回原來的位置.
CGAffineTransformMakeTranslation(x,y)
兩種變換方式的合併
利用以下方式可以將兩種變換合為一種
CGAffineTransformConcat(transform1, tramsform2)
ex.
let scale = CGAffineTransformMakeScale(0.0, 0.0)
let translate = CGAffineTransformMakeTranslation(0, 500)
self.ratingStackView.transform = CGAffineTransformConcat(scale, translate)
Unwind Segue
將資料回傳給前一個View
官方教學:
https://developer.apple.com/library/ios/technotes/tn2298/_index.html
http://blog.csdn.net/kid_devil/article/details/23218195 (中文)
沒有留言:
張貼留言