本文為參考學(xué)習(xí)的文章咒唆,在閱讀這位作者的源碼之后學(xué)習(xí)到的一個(gè)小方法届垫。
解決方案
在 iOS 中,為應(yīng)用設(shè)置啟動(dòng)頁(yè)非常簡(jiǎn)單全释。按照 Apple 的意思装处,啟動(dòng)頁(yè)應(yīng)當(dāng)盡可能的與首屏相似,并且盡可能的避免使用啟動(dòng)動(dòng)畫(huà)浸船。但是有時(shí)候我們想讓啟動(dòng)頁(yè)稍微豐富一些妄迁,為它添加一些事情找前。
在之前,我的做法是(OC)
在 AppDelegate 中的
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
方法中添加動(dòng)畫(huà)效果判族,具體實(shí)現(xiàn)如下:
- 獲取 LaunchScreen 中的 view(這需要你的應(yīng)用啟動(dòng)頁(yè)設(shè)置為 LaunchScreen)
UIViewController *viewController = [[UIStoryboard storyboardWithName:@"LaunchScreen" bundle:nil] instantiateViewControllerWithIdentifier:@"LaunchScreen"];
UIView *launchView = viewController.view;
- 將 view 添加到 window 上
[self.window addSubview:launchView];
- 實(shí)現(xiàn) view 的動(dòng)畫(huà)
[UIView animateWithDuration:1.3f delay:0.1f options:UIViewAnimationOptionBeginFromCurrentState animations:^{
launchView.alpha = 0.0f;
launchView.layer.transform = CATransform3DScale(CATransform3DIdentity, 1.3f, 1.3f, 1.0f);
} completion:^(BOOL finished) {
[launchView removeFromSuperview];
}];
這里將 view 放大顯示并且同時(shí)消失躺盛,記得在動(dòng)畫(huà)結(jié)束時(shí)將 view 移除掉。
新的小方法是(swift)
上述方法將啟動(dòng)頁(yè)的 ViewController 拿到形帮,所以可以將其上的多個(gè)控件一起處理槽惫,形成比較和諧的效果。但是也有很多啟動(dòng)頁(yè)都由一張圖片構(gòu)成辩撑,所以在這里界斜,我們可以直接拿到圖片,進(jìn)行處理合冀。
- 一個(gè)獲取啟動(dòng)圖片的函數(shù)(這謎一般的對(duì)齊)
func launchImage() -> UIImage {
var launchImage : UIImage!
var viewOrientation : String!
let viewSize = UIScreen.main.bounds.size
let orientation = UIApplication.shared.statusBarOrientation
// 獲取屏幕方向
if orientation == .landscapeLeft || orientation == .landscapeRight {
viewOrientation = "Landscape"
} else {
viewOrientation = "Portrait"
}
let imagesInfo = Bundle.main.infoDictionary!["UILaunchImages"]
for dic: Dictionary<String, String> in imagesInfo as! Array {
let imageSize = CGSizeFromString(dic["UILaunchImageSize"]!)
if imageSize.equalTo(viewSize) && viewOrientation == dic["UILaunchImageOrientation"]! as String {
launchImage = UIImage(named: dic["UILaunchImageName"]!)
}
}
return launchImage
}
在這里各薇,獲取的是 Assets 中的啟動(dòng)頁(yè)。
- 在 viewDidLoad() 中添加 UIImageView君躺,設(shè)置圖片
override func viewDidLoad() {
super.viewDidLoad()
// 添加啟動(dòng)頁(yè)
let launchImageView = UIImageView(frame: self.view.bounds)
launchImageView.image = self.launchImage()
view.addSubview(launchImageView)
UIView.animate(withDuration: 1, delay: 1, options: .curveEaseIn, animations: {
launchImageView.transform = CGAffineTransform(scaleX: 1.5, y: 1.5)
launchImageView.alpha = 0
}) { (finished) in
launchImageView.removeFromSuperview()
}
}
- 動(dòng)畫(huà)處理峭判,同上。
遇到的問(wèn)題
在處理第二種方案時(shí)棕叫,發(fā)現(xiàn)這個(gè)動(dòng)畫(huà)只能加在 Initial View Controller 中林螃,否則動(dòng)畫(huà)沒(méi)有效果。
總結(jié)
其實(shí)在 LaunchScreen 配置啟動(dòng)頁(yè)較為簡(jiǎn)便俺泣,只需要一個(gè)圖片即可疗认,并且可以控制各個(gè)控件,相對(duì)靈活伏钠。但是剛剛打開(kāi)之前的代碼運(yùn)行時(shí)發(fā)現(xiàn)一個(gè)問(wèn)題横漏。。熟掂。各取所需吧缎浇。