- 一直以為這種事分分鐘鐘,結果就是要踩點坑才知道好壞
LaunchImage
-
iOS11現在項目的General設置:
屏幕快照 2017-11-03 14.21.29.png 這個簡單吧,在Assets --> 點擊+號選擇 --> AppIcons & LaunchImages --> New iOS Launch Image,如下圖:
屏幕快照 2016-11-10 上午10.05.08.png
- 在LaunchImage的右邊欄選擇屬性 ---> 選擇iOS7和iOS8以后的豎屏的,如下圖:
屏幕快照 2016-11-10 上午10.08.28.png
- 到了這一步,貼尺寸
- 640*960 (4/4s) 2x位置
- 640*1136 (5/5s/5c/SE) R4位置
- 750*1334 (6, 7) R4.7位置
- 1242*2208 (6 plus, 7Plus) R5.5位置
- 1125x2436(iPhoneX) iPhoneX位置
- 我貼貼貼.....貼不上啊.....莫非尺寸錯了,UI給的是1242*2208貼不上,為縮放先看看其他的能行不
- 打開預覽圖片--> 點擊工具 --> 調整大小,如下圖:
屏幕快照 2016-11-10 上午9.39.48.png
- 要去掉比例縮放,因為不是等比的,如下圖:
屏幕快照 2016-11-10 上午9.37.48.png
- 又開始貼貼貼.....還是不行....看了一下圖片的后綴我的眼淚掉下來,真心沒注意居然是jpg的圖片,LaunchImage只支持PNG啊
- 所以又改了, 圖片預覽 --> 文件 --> 導出--> 選擇PNG,如下圖:
屏幕快照 2016-11-10 上午9.38.28.png
屏幕快照 2016-11-10 上午9.38.55.png
- 好了,這才貼上,Launch Screen File為空.然后項目--> General --> App Icons and Launch Images -- > Launch Images Source選擇LaunchImage就可以了,如下圖:
屏幕快照 2016-11-10 上午10.44.38.png
- 讓我們見證驚喜的時刻:
IMG_1622.PNG
- 這尼瑪還是前面的LaunchImage是為啥?還是這黑屏是什么鬼?點擊項目還能這樣:
IMG_1623.PNG
- 我感覺自己被蠢哭了,想起xcode8使用xib的時候那個坑爹的緩存,這緩存太嚴重了吧,clean一下:
屏幕快照 2016-11-10 上午9.53.46.png
- 結果黑屏還是存在,一看就是LaunchImage尺寸不對,可才知道原來可以這樣縮小一個應用的尺寸,重新檢查尺寸貼上就ok,終于ok了.
AppIcon
- 額,想說忽然發現和LaunchImage差不多啊,就就是新建AppIcon照著有的尺寸x倍數修圖就可以了
引導頁
- 尺寸需要最大的: 750x1334pt
- 引導頁主要更具UI給的圖我們在程序中修一下圖片就可以,我直接上代碼吧,不能直接使用哦!有自己的宏和控制器在里面:
#import "LXKGuideViewVC.h"
#import "B1_LXKLoginVC.h"
#import "LXKNavigationController.h"
// 分頁控件的高度
static const NSUInteger kPageControlHeight = 120;
@interface LXKGuideViewVC () <UIScrollViewDelegate>
@property (nonatomic, strong) UIScrollView *guideViewScrollView; //引導頁的滾動視圖
@property (nonatomic, strong) UIPageControl *pageControl; //創建分頁控件 監控當前頁面和使頁面一頁頁的翻動
@property (nonatomic, copy) NSArray *imageNameArray; // 引導頁圖片的名字
@end
@implementation LXKGuideViewVC
#pragma mark - Lifecycle
- (void)viewDidLoad {
[super viewDidLoad];
[self.view addSubview:self.guideViewScrollView];
[self.view addSubview:self.pageControl];
[self createGuideView];
}
#pragma mark - Custom Accessors
- (UIScrollView *)guideViewScrollView {
if (!_guideViewScrollView) {
_guideViewScrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
_guideViewScrollView.bounces = NO;
_guideViewScrollView.showsHorizontalScrollIndicator = NO;
// 打開分頁控件
_guideViewScrollView.pagingEnabled = YES;
_guideViewScrollView.delegate = self;
}
return _guideViewScrollView;
}
- (NSArray *)imageNameArray {
if (!_imageNameArray) {
_imageNameArray = @[@"GuideView1",@"GuideView2",@"GuideView3"];
}
return _imageNameArray;
}
- (UIPageControl *)pageControl {
if (_pageControl) {
_pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, SCREENHEIGHT - kPageControlHeight, SCREENWIDTH, kPageControlHeight)];
}
return _pageControl;
}
#pragma mark - privateMethod
- (void)createGuideView {
self.guideViewScrollView.contentSize = CGSizeMake(SCREENWIDTH * self.imageNameArray.count + SCREENWIDTH, SCREENHEIGHT);
// 循環創建圖片
for (NSUInteger i = 0,count = self.imageNameArray.count; i < count; i++) {
UIImage *image = [UIImage imageNamed:self.imageNameArray[i]];
image = [self imageCompressWithSimple:image scaledToSize:CGSizeMake(SCREENWIDTH, SCREENHEIGHT)];
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(SCREENWIDTH * i, 0, SCREENWIDTH, SCREENHEIGHT)];
imageView.image = image;
[self.guideViewScrollView addSubview:imageView];
self.pageControl.currentPage = 0;
self.pageControl.numberOfPages = count;
}
}
- (void)pushFirstPage {
[LXKUserDefaultsTools userDefaultsSaveBool:YES key:@"isShowGuideView"];
B1_LXKLoginVC *firstPage = [[B1_LXKLoginVC alloc] init];
LXKNavigationController *nav = [[LXKNavigationController alloc] initWithRootViewController:firstPage];
UIWindow *window = [[UIApplication sharedApplication].windows firstObject];
window.rootViewController = nav;
}
// 縮放到指定大小
- (UIImage*)imageCompressWithSimple:(UIImage*)image scaledToSize:(CGSize)size
{
UIGraphicsBeginImageContext(size);
[image drawInRect:CGRectMake(0,0,size.width,size.height)];
UIImage* newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
#pragma mark - UIScrollViewDelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if (scrollView == self.guideViewScrollView) {
// 取到scrollView的偏移量好改變分頁控件的currentPage
CGFloat x = scrollView.contentOffset.x;
// 根據偏移量四舍五入
_pageControl.currentPage = lround(x / SCREENWIDTH);
if (x > 2 * SCREENWIDTH) {
[self pushFirstPage];
}
}
}
@end