亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

IOS開發基礎知識--碎片10

2019-11-14 19:20:04
字體:
來源:轉載
供稿:網友

1:如何給表格單元列增加選擇時的背影效果

if (cell == nil) {        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];        cell.backgroundColor = [UIColor clearColor];        cell.textLabel.font = [UIFont fontWithName:@"HelveticaNeue" size:18];        cell.textLabel.textColor = [UIColor whiteColor];        cell.textLabel.highlightedTextColor = [UIColor lightGrayColor];        UIView *sbg=[[UIView alloc] initWithFrame:cell.frame];        sbg.backgroundColor=[UIColor colorWithWhite:0.5 alpha:0.3];        cell.selectedBackgroundView = sbg;    }

2:修改標題欄的文字

UIColor *cc = [UIColor whiteColor];    NSDictionary * dict = [NSDictionary dictionaryWithObject:cc forKey:UITextAttributeTextColor];    self.navigationController.navigationBar.titleTextAttributes = dict;

3:一個滾動啟動頁功能代碼

#define NewFeatureCount 4@interface HVWNewFeatureViewController () <UIScrollViewDelegate>@PRoperty(nonatomic, strong) UipageControl *pageControl;@end@implementation HVWNewFeatureViewController- (void)viewDidLoad {    [super viewDidLoad];    // Do any additional setup after loading the view.        // 添加scrollView    [self setupScrollView];        // 添加pageControl    [self setupPageControl];}/** 添加scrollView */- (void) setupScrollView {    // 創建一個scrollView    UIScrollView *scrollView = [[UIScrollView alloc] init];    scrollView.frame = self.view.bounds;        // 添加圖片    for (int i=0; i<NewFeatureCount; i++) {                // 獲取圖片        NSString *featureImageName = [NSString stringWithFormat:@"new_feature_%d", i+1];        UIImageView *featureImageView = [[UIImageView alloc] initWithImage:[UIImage imageWithNamed:featureImageName]];                // 設置圖片尺寸位置        CGFloat featureWidth = self.view.width;        CGFloat featureHeight = self.view.height;        CGFloat featureX = featureImageView.width * i;        CGFloat featureY = 0;        featureImageView.frame = CGRectMake(featureX, featureY, featureWidth, featureHeight);                // 如果是最后一頁,加上功能按鈕        if (i == (NewFeatureCount - 1)) {            // 為了讓最后一頁的的功能按鈕能夠生效,必須激活交互功能            featureImageView.userInteractionEnabled = YES;                        [self addFunctionButton:featureImageView];        }                // 添加圖片到scrollView        [scrollView addSubview:featureImageView];    }        // 設置scrollView功能屬性    scrollView.userInteractionEnabled = YES;    scrollView.scrollEnabled = YES; // 支持滾動    scrollView.contentSize = CGSizeMake(self.view.width * NewFeatureCount, 0); // 只需要水平滾動    scrollView.pagingEnabled = YES; // 支持分頁    scrollView.showsHorizontalScrollIndicator = NO; // 隱藏水平滾動條        // 設置背景色    scrollView.backgroundColor = [UIColor colorWithRed:246/255.0 green:246/255.0 blue:246/255.0 alpha:1.0];        // 設置代理    scrollView.delegate = self;        // 添加    [self.view addSubview:scrollView];}/** 添加pageControl */- (void) setupPageControl {    // pageControl不能加在scrollView上,不然會隨著內容一起滾動    UIPageControl *pageControl = [[UIPageControl alloc] init];    pageControl.pageIndicatorTintColor = [UIColor blackColor];    pageControl.currentPageIndicatorTintColor = [UIColor redColor];    pageControl.numberOfPages = NewFeatureCount;        // 設置位置    pageControl.centerX = self.view.width * 0.5;    pageControl.centerY = self.view.height * 0.9;            self.pageControl = pageControl;    [self.view addSubview:pageControl];}#pragma mark - UIScrollViewDelegate/** scrollView滾動代理方法,在這里控制頁碼指示器 */- (void)scrollViewDidScroll:(UIScrollView *)scrollView {    // 四舍五入,讓圖片滾動超過中線的時候改變頁碼    self.pageControl.currentPage = scrollView.contentOffset.x / scrollView.width + 0.5;}#pragma mark - 最后一頁的功能/** 添加功能按鈕 */- (void) addFunctionButton:(UIImageView *) imageView {    // 添加"分享"選項按鈕    [self addShareButton:imageView];        // 添加"進入微博"按鈕    [self addEnterWeiboButton:imageView];}/** 分享選項按鈕 */- (void) addShareButton:(UIImageView *) imageView  {    // 創建按鈕    UIButton *shareButton = [UIButton buttonWithType:UIButtonTypeCustom];        [shareButton setTitle:@"分享給大家" forState:UIControlStateNormal];        [shareButton setImage:[UIImage imageWithNamed:@"new_feature_share_false"] forState:UIControlStateNormal];    [shareButton setImage:[UIImage imageWithNamed:@"new_feature_share_true"] forState:UIControlStateSelected];            [shareButton addTarget:self action:@selector(shareButtonClicked:) forControlEvents:UIControlEventTouchUpInside];        [shareButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];        // 位置尺寸    shareButton.size = CGSizeMake(150, 50);        // 必須先設置了size,center才真的在中心,不然就是從左上角開始!!!    shareButton.centerX = self.view.width * 0.5;    shareButton.centerY = self.view.height * 0.65;    // 設置內間距    shareButton.titleEdgeInsets = UIEdgeInsetsMake(0, 10.0, 0, 0);        // 添加    [imageView addSubview:shareButton];}/** 分享選項點擊事件方法 */- (void) shareButtonClicked:(UIButton *) button {    button.selected = !button.selected;}/** “進入微博"按鈕 */- (void) addEnterWeiboButton:(UIImageView *) imageView  {    // 創建按鈕    UIButton *enterButton = [UIButton buttonWithType:UIButtonTypeCustom];    enterButton.userInteractionEnabled = YES;    [enterButton setBackgroundImage:[UIImage imageWithNamed:@"new_feature_finish_button"] forState:UIControlStateNormal];    [enterButton setBackgroundImage:[UIImage imageWithNamed:@"new_feature_finish_button_highlighted"] forState:UIControlStateHighlighted];    [enterButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];    [enterButton setTitle:@"進入微博" forState:UIControlStateNormal];        // 位置尺寸    enterButton.size = enterButton.currentBackgroundImage.size;    enterButton.centerX = self.view.width * 0.5;    enterButton.centerY = self.view.height * 0.8;        // 監聽點擊    [enterButton addTarget:self action:@selector(enterWeiboButtonClicked) forControlEvents:UIControlEventTouchUpInside];        // 添加    [imageView addSubview:enterButton];}/** “進入微博” 按鈕點擊 */- (void) enterWeiboButtonClicked {    UIWindow *window = [UIapplication sharedApplication].keyWindow;    window.rootViewController = [[HVWTabBarViewController alloc] init];}@end

4:增加刪除控制器

增加控制器:[self addChildViewController:toViewController];[toViewController didMoveToParentViewController:self];小實例:- (IBAction)btnAction:(id)sender {    CiderViewController *cid=[[CiderViewController alloc] init];    [self addChildViewController:cid];    CGRect frame=self.myView.bounds;    frame.origin.y=110;    frame.size.width=290;    frame.size.height=90;        cid.view.frame=frame;    cid.view.backgroundColor=[UIColor redColor];    [self.myView addSubview:cid.view];    [cid didMoveToParentViewController:self];}刪除控制器:1.當我們向我們的視圖控制器容器中調用removeFromParentViewController方法時,必須要先調用該方法,且parent參數為nil:[將要刪除的視圖控制器 willMoveToParentViewController:nil];[fromViewController willMoveToParentViewController:nil];[fromViewController removeFromParentViewController];Í一些說明:關于willMoveToParentViewController方法和didMoveToParentViewController方法的使用1.這兩個方法用在子試圖控制器交換的時候調用!即調用transitionFromViewController 方法時,調用。2.當調用willMoveToParentViewController方法或didMoveToParentViewController方法時,要注意他們的參數使用:當某個子視圖控制器將從父視圖控制器中刪除時,parent參數為nil。即:[將被刪除的子試圖控制器 willMoveToParentViewController:nil];當某個子試圖控制器將加入到父視圖控制器時,parent參數為父視圖控制器。即:[將被加入的子視圖控制器 didMoveToParentViewController:父視圖控制器];3.無需調用[子視圖控制器 willMoveToParentViewController:父視圖控制器]方法。因為我們調用[父視圖控制器 addChildViewController:子視圖控制器]時,已經默認調用了。只需要在transitionFromViewController方法后,調用[子視圖控制器didMoveToParentViewController:父視圖控制器];4.無需調用[子視圖控制器 didMoveToParentViewController:父視圖控制器]方法。因為我們調用[子視圖控制器 removeFromParentViewController]時,已經默認調用了。只需要在transitionFromViewController方法之前調用:[子視圖控制器 willMoveToParentViewController:nil]。不錯的文章(http://www.cocoanetics.com/2012/04/containing-viewcontrollers/  http://mobile.51cto.com/iphone-313146.htm)

5:關于UIView的autoresizingMask屬性的研究

在 UIView 中有一個autoresizingMask的屬性,它對應的是一個枚舉的值(如下),屬性的意思就是自動調整子控件與父控件中間的位置,寬高。enum {   UIViewAutoresizingNone                 = 0,   UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,   UIViewAutoresizingFlexibleWidth        = 1 << 1,   UIViewAutoresizingFlexibleRightMargin  = 1 << 2,   UIViewAutoresizingFlexibleTopMargin    = 1 << 3,   UIViewAutoresizingFlexibleHeight       = 1 << 4,   UIViewAutoresizingFlexibleBottomMargin = 1 << 5};UIViewAutoresizingNone就是不自動調整。UIViewAutoresizingFlexibleLeftMargin 自動調整與superView左邊的距離,保證與superView右邊的距離不變。UIViewAutoresizingFlexibleRightMargin 自動調整與superView的右邊距離,保證與superView左邊的距離不變。UIViewAutoresizingFlexibleTopMargin 自動調整與superView頂部的距離,保證與superView底部的距離不變。UIViewAutoresizingFlexibleBottomMargin 自動調整與superView底部的距離,也就是說,與superView頂部的距離不變。UIViewAutoresizingFlexibleWidth 自動調整自己的寬度,保證與superView左邊和右邊的距離不變。UIViewAutoresizingFlexibleHeight 自動調整自己的高度,保證與superView頂部和底部的距離不變。UIViewAutoresizingFlexibleLeftMargin  |UIViewAutoresizingFlexibleRightMargin 自動調整與superView左邊的距離,保證與左邊的距離和右邊的距離和原來距左邊和右邊的距離的比例不變。比如原來距離為20,30,調整后的距離應為68,102,即68/20=102/30。其它的組合類似。實例:CGRect frame = [[UIScreen mainScreen] applicationFrame];UIView *view = [[UIView alloc] initWithFrame:frame];view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

6:系統提供的dispatch方法

為了方便地使用GCD,蘋果提供了一些方法方便我們將block放在主線程 或 后臺線程執行,或者延后執行。使用的例子如下:    1    //  后臺執行:     2     dispatch_async(dispatch_get_global_queue(00), ^3          // something     4     });     5     // 主線程執行:     6     dispatch_async(dispatch_get_main_queue(), ^7          // something     8     });     9     // 一次性執行:     10     static dispatch_once_t onceToken;     11     dispatch_once(&onceToken, ^12         // code to be executed once     13     });     14     // 延遲2秒執行:     15     double delayInSeconds = 2.016     dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);     17     dispatch_after(popTime, dispatch_get_main_queue(), ^(void){     18         // code to be executed on the main queue after delay     19     }); dispatch_queue_t 也可以自己定義,如要要自定義queue,可以用dispatch_queue_create方法,示例如下:    1    dispatch_queue_t urls_queue = dispatch_queue_create("blog.devtang.com", NULL);     2    dispatch_async(urls_queue, ^3         // your code     4    });     5    dispatch_release(urls_queue); 另外,GCD還有一些高級用法,例如讓后臺2個線程并行執行,然后等2個線程都結束后,再匯總執行結果。這個可以用dispatch_group, dispatch_group_async 和 dispatch_group_notify來實現,示例如下:    1    dispatch_group_t group = dispatch_group_create();     2    dispatch_group_async(group, dispatch_get_global_queue(0,0), ^3          // 并行執行的線程一     4     });     5     dispatch_group_async(group, dispatch_get_global_queue(0,0), ^6          // 并行執行的線程二     7     });     8     dispatch_group_notify(group, dispatch_get_global_queue(0,0), ^9          // 匯總結果     10     }); 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线观看欧美成人| 成人欧美一区二区三区在线湿哒哒| 亚洲欧美制服中文字幕| 一本久久综合亚洲鲁鲁| 97av在线播放| 日韩欧美第一页| 午夜精品福利电影| 亚洲人成网站色ww在线| 国产成人精品在线视频| 国产精品久久999| 在线视频国产日韩| 精品视频9999| 欧美片一区二区三区| 精品中文字幕在线2019| 4p变态网欧美系列| 成人免费视频在线观看超级碰| 中文字幕精品影院| 亚洲免费精彩视频| 国内精品一区二区三区| 日本在线观看天堂男亚洲| 久久久久久高潮国产精品视| 欧美猛男性生活免费| 日韩欧美在线字幕| 国产精品丝袜久久久久久不卡| 亚洲影院污污.| 欧美激情三级免费| 国产主播欧美精品| 久久精品色欧美aⅴ一区二区| 中文字幕亚洲欧美日韩在线不卡| 色婷婷**av毛片一区| 久久精品99无色码中文字幕| 91久久综合亚洲鲁鲁五月天| 少妇高潮久久久久久潘金莲| 欧洲亚洲女同hd| 永久免费看mv网站入口亚洲| 在线观看成人黄色| 在线视频一区二区| 国产日韩精品综合网站| 亚洲欧美成人一区二区在线电影| 热99精品里视频精品| 欧美日韩国内自拍| 中文字幕欧美日韩| 91在线视频免费| 欧美激情精品久久久久久蜜臀| 国产精品在线看| 91黑丝在线观看| 欧美日韩视频在线| 欧美大尺度激情区在线播放| 国产精品视频xxx| 日韩av在线影视| 亚洲国产日韩精品在线| 久久这里只有精品视频首页| 色综合久久88色综合天天看泰| 久久亚洲一区二区三区四区五区高| 久青草国产97香蕉在线视频| 中文字幕在线日韩| 久久精品福利视频| 亚洲国产私拍精品国模在线观看| 久久久噜噜噜久噜久久| 日av在线播放中文不卡| 久久影视电视剧凤归四时歌| 国产欧美精品一区二区三区-老狼| 国产剧情日韩欧美| 自拍偷拍亚洲一区| 一个人看的www欧美| 日韩欧美视频一区二区三区| 国产va免费精品高清在线观看| 国产精品一区二区三区久久久| 国产精品视频内| 91精品国产乱码久久久久久蜜臀| 精品视频在线播放色网色视频| 97av在线影院| 欧美理论电影在线播放| 日韩免费观看网站| 国产性猛交xxxx免费看久久| 日本亚洲欧洲色α| 亚洲精品国产精品国产自| 成人激情黄色网| 综合网中文字幕| 欧美洲成人男女午夜视频| 日韩va亚洲va欧洲va国产| 亚洲综合一区二区不卡| 91精品久久久久久久久久| 欧美性色19p| 九九热精品视频国产| 欧美精品中文字幕一区| 91香蕉嫩草神马影院在线观看| 成人a视频在线观看| 国产欧美一区二区| 亚洲精品视频免费在线观看| 欧美黑人又粗大| 久久视频在线视频| 亚洲国产成人精品久久| 久久精品国产96久久久香蕉| 亚洲午夜久久久久久久| 尤物yw午夜国产精品视频| 成人黄色大片在线免费观看| 91网站在线免费观看| 成人久久一区二区| 国产不卡精品视男人的天堂| 日韩av电影手机在线观看| 久久资源免费视频| 国产精品久久久久久久美男| 5252色成人免费视频| 欧美国产欧美亚洲国产日韩mv天天看完整| 在线精品播放av| 亚洲综合精品伊人久久| 久久天天躁狠狠躁夜夜av| 精品国产一区二区在线| 中文字幕最新精品| 欧美美女18p| 国产精品爽爽爽爽爽爽在线观看| 91高清免费视频| 亚洲欧美国产日韩天堂区| 国产成人精品视频| 亚洲黄色www| 亚洲视频在线播放| 国产91ⅴ在线精品免费观看| 久久久久国产精品免费网站| 亚洲区在线播放| 亚洲国产天堂久久综合网| 亚洲欧美制服第一页| 91久久精品国产91性色| 成人国产精品免费视频| 色综合天天狠天天透天天伊人| 97久久精品人搡人人玩| 久久久久亚洲精品成人网小说| 欧美一区二区色| 日本精品中文字幕| 亚洲精品视频在线观看视频| 日韩av一区二区在线| 最新国产精品拍自在线播放| 欧美成人免费在线视频| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲男人天堂2019| 久久综合伊人77777尤物| 亚洲美女精品成人在线视频| 成人免费自拍视频| 狠狠色噜噜狠狠狠狠97| 亚洲国产精品一区二区久| 国产精彩精品视频| 国产精品美腿一区在线看| 久久久久久久91| 国产精品扒开腿爽爽爽视频| 91欧美激情另类亚洲| 亚洲人成绝费网站色www| 国产精品一区二区久久久| 国产精品免费在线免费| 中文字幕欧美在线| 欧美综合激情网| 亚洲男人天堂九九视频| 久久频这里精品99香蕉| 日本免费一区二区三区视频观看| 欧美国产视频日韩| 亚洲国产成人一区| 久久99青青精品免费观看| 欧美性感美女h网站在线观看免费| 亚洲欧美日韩综合| 高跟丝袜一区二区三区| 欧美激情精品久久久久久久变态| 国产视频丨精品|在线观看| 国产午夜精品一区二区三区| 国产精品6699| 欧美一级在线亚洲天堂|