iOS 应用开发最佳实践 PDF 超清版

  • 更新时间:
  • 8854人关注
  • 点击下载

给大家带来的一篇关于iOS开发相关的电子书资源,介绍了关于iOS、应用开发方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小149.43MB,王浩编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:9.5分。

资源详情相关推荐
iOS 应用开发最佳实践
  • 出版社:电子工业出版社
  • 作者:王浩
  • 大小:149.43MB
  • 类别:iOS开发
  • 热度:262
  • iOS 9应用开发入门经典
  • iOS增强现实应用开发实战
  • 自己动手做iOS App:从设计开发到上架App Store
  • iOS 6应用开发入门经典(第4版)
  • 精通iOS开发
  • 书籍介绍

    iOS应用开发最佳实践》解释了iOS应用程序开发的各个方面。全书共分20章,系统介绍了第一款iPhone应用的创建、目标-C语言开发基础、设计iPhone应用程序、导航栏视图控制器和选项卡栏视图控制器、属性字符串、iOS控制应用简介、IOS控制应用程序高级、应用程序和视图生命周期、IOS绘图和自动旋转、iOS自动布局、手势识别技术、iOS高级控件、存折、集合视图、IOS多线程编程、数据持久化、核心位置定位和MapKit、CoreMotion动作管理器和iCloud云服务。全书讲解通俗易懂,循序渐进,案例丰富,帮助读者快速掌握iOS开发技巧,举一反三、融会贯通。《iOS应用开发最佳实践》适合肯定.NET、有Java开发经验的开发人员、需要为企业内部用户开发iOS应用的IT人员、想接触和了解iOS应用开发的人,想了解iOS应用各种功能的人,请阅读和参考。

    目录

    • 第1章 创建第1个iPhone应用 1
    • 1.1 iPhone应用开发的背景 1
    • 1.2 做好准备工作 5
    • 1.3 下载开发工具 7
    • 1.4 了解iOS运行环境 8
    • 1.5 iOS应用开发的注意点 9
    • 1.6 创建第1个Hello World iPhone应用 10
    • 1.6.1 通过Xcode创建并运行iPhone项目 10
    • 1.6.2 了解iPhone应用的基本运行机理 15
    • 1.6.3 丰富你的iPhone应用 18
    • 1.6.4 为应用添加桌面图标 21
    • 1.6.5 关于iPhone 5应用的补充说明 24
    • 1.6.6 老版本应用的兼容性问题 24
    • 1.7 小结 24
    • 第2章 Objective-C语言开发基础 25
    • 2.1 Objective-C的Hello World程序 26
    • 2.2 创建一个Objective-C类 29
    • 2.2.1 通过Xcode创建Person类 29
    • 2.2.2 对Person类的解读 32
    • 2.2.3 类的构造方法 36
    • 2.2.4 继承和多态 38
    • 2.2.5 选择器(selector) 43
    • 2.3 常用类介绍 45
    • 2.3.1 NSString类 45
    • 2.3.2 NSArray类 48
    • 2.3.3 NSDictionary类 51
    • 2.4 属性(Property) 53
    • 2.4.1 设置属性 53
    • 2.4.2 以Person类为例 53
    • 2.4.3 @synthesize指令 54
    • 2.4.4 Xcode 4.5以后版本对@synthesize指令的处理 56
    • 2.4.5 属性特性 56
    • 2.5 内存管理 58
    • 2.6 类别(class category) 59
    • 2.7 类扩展(class extension) 62
    • 2.8 协议 63
    • 2.8.1 声明协议 63
    • 2.8.2 使用协议 63
    • 2.8.3 更多协议的特性 64
    • 2.9 小结 64
    • 第3章 设计iPhone应用——从零开始 65
    • 3.1 MVC架构 65
    • 3.2 基于nib文件开发单视图交互性的应用 67
    • 3.1.1 创建交互性应用视图 67
    • 3.1.2 连接视图和视图控制器 72
    精选笔记:IOS开发之UIScrollView实现图片轮播器的无限滚动

    24小时35分钟前回答

    IOS开发之UIScrollView实现图片轮播器的无限滚动

    简介

    在现在的一些App中常常见到图片轮播器,一般用于展示广告、新闻等数据,在iOS内并没有现成的控件直接实现这种功能,但是通过UIScrollView的允许分页设置,可以实现滚动轮播的功能。

    轮播原理

    UIScrollView对象有pagingEnable成员,如果设置为YES,那么每一个scrollView尺寸这么大的区域就会被当作一页,在滚动时会根据滚动的比例自动计算应该切换到哪一页。

    无限滚动原理

    要实现无限滚动,需要额外的两张图片,假设我们的图片有五张,存在images数组中,那么我们在将图片插入到scrollView中时,在第一张图片前面插入一个最后一张图片作为辅助图片,在最后一张后面插入一个第一张图片作为辅助图片。这样,当滚动到第一张前面一张时,在页面切换结束后无动画的切换scrollView的偏移量为最后一张图片(不包含最后一张后面的第一张那个辅助图片),这样就实现了由辅助图片到真实图片的过渡,之所以设置辅助图片是为了在滚动中看到那个真实图片。同理,当滚动到最后一张的后面一张时,我们吧scrollView的偏移量设置为第一张图片即可。

    具体的代码实现

    这个代码是在开发一个项目中所写的,已经封装称一个View,只需要调用initWithFrame指定轮播器尺寸,然后通过设置images成员的值即可实现无限滚动的轮播。

    // .h
    //
    // ESPicPageView.h
    // 享技
    //
    // Created by 11 on 11/30/15.
    // Copyright © 2015 soulghost. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    
    @interface ESPicPageView : UIView
    
    @property (nonatomic, strong) NSArray *images;
    
    @end
    // --------------------------------------------
    // .m
    //
    // ESPicPageView.m
    // 享技
    //
    // Created by 11 on 11/30/15.
    // Copyright © 2015 soulghost. All rights reserved.
    //
    
    #import "ESPicPageView.h"
    #import "UIImageView+WebCache.h"
    
    @interface ESPicPageView () <UIScrollViewDelegate>
    
    @property (nonatomic, weak) UIScrollView *scrollView;
    @property (nonatomic, weak) UIPageControl *pageControl;
    @property (nonatomic, assign) CGFloat imgW;
    @property (nonatomic, assign) CGFloat imgH;
    @property (nonatomic, strong) NSTimer *timer;
    @property (nonatomic, strong) NSArray *imageViews;
    @property (nonatomic, assign) NSInteger imageCount;
    
    @end
    
    @implementation ESPicPageView
    
    - (instancetype)initWithFrame:(CGRect)frame{
    
      if (self = [super initWithFrame:frame]) {
    
        self.backgroundColor = [UIColor blueColor];
        UIScrollView *scrollView = [[UIScrollView alloc] init];
        self.scrollView = scrollView;
        self.scrollView.delegate = self;
        self.scrollView.pagingEnabled = YES;
        self.scrollView.showsHorizontalScrollIndicator = NO;
        self.scrollView.backgroundColor = [UIColor whiteColor];
        [self addSubview:scrollView];
        self.imgW = frame.size.width;
        self.imgH = frame.size.height;
        [self setNeedsLayout];
    
        UIPageControl *pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(frame.size.width - 50, frame.size.height - 10, 0, 0)];
        self.pageControl = pageControl;
        self.pageControl.numberOfPages = 1;
        [self addSubview:pageControl];
    
        self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextImage) userInfo:nil repeats:YES];
        [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
    
      }
    
      return self;
    
    }
    
    - (void)nextImage{
      NSInteger page = self.pageControl.currentPage;
      page = self.pageControl.currentPage + 1;
      CGPoint offset = CGPointMake((1 + page) * self.imgW, 0);
      [self.scrollView setContentOffset:offset animated:YES];
    }
    
    - (void)setupImageViews{
    
      for (int i = 0; i < self.images.count + 2; i++) {
        UIImageView *imageView = [[UIImageView alloc] init];
        CGFloat imageX = i * self.imgW;
        CGFloat imageY = 0;
        CGFloat imageW = self.imgW;
        CGFloat imageH = self.imgH;
        imageView.frame = CGRectMake(imageX, imageY, imageW,imageH);
        [self.scrollView insertSubview:imageView atIndex:0];
      }
    
    }
    
    - (NSArray *)imageViews{
    
      if (_imageViews == nil) {
        NSMutableArray *arr = [NSMutableArray array];
        for (int i = 0; i < self.images.count + 2; i++) {
          UIImageView *imageView = [[UIImageView alloc] init];
          CGFloat imageX = i * self.imgW;
          CGFloat imageY = 0;
          CGFloat imageW = self.imgW;
          CGFloat imageH = self.imgH;
          imageView.frame = CGRectMake(imageX, imageY, imageW,imageH);
          [self.scrollView insertSubview:imageView atIndex:0];
          [arr addObject:imageView];
        }
        _imageViews = arr;
      }
    
      return _imageViews;
    
    }
    
    - (void)setImages:(NSArray *)images{
    
      _images = images;
      self.imageCount = images.count;
      self.pageControl.numberOfPages = self.imageCount;
      [self addPics];
    
    }
    
    - (void)addPics{
    
      for (int i = 0; i < self.images.count + 2; i++) {
        UIImageView *imageView = self.imageViews[i];
        if (i == 0) {
          imageView.image = [self.images lastObject];
        }else if(i == self.images.count + 1){
          imageView.image = [self.images firstObject];
        }else{
          imageView.image = self.images[i - 1];
        }
      }
    
    }
    
    - (void)layoutSubviews{
    
      [super layoutSubviews];
      self.scrollView.frame = self.bounds;
      self.scrollView.contentSize = CGSizeMake((self.imageCount + 2) * self.imgW, 0);
      [self.scrollView setContentOffset:CGPointMake(self.imgW, 0) animated:NO];
    
    }
    
    - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
    
      [self.timer invalidate];
      self.timer = nil;
    }
    
    - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
    
      self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(nextImage) userInfo:nil repeats:YES];
      [[NSRunLoop currentRunLoop ] addTimer:self.timer forMode:NSRunLoopCommonModes];
    
    }
    
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    
      if (scrollView.contentOffset.x == self.imgW * (self.imageCount + 1)) {
        [self.scrollView setContentOffset:CGPointMake(self.imgW, 0) animated:NO];
      }else if(scrollView.contentOffset.x == 0){
        [self.scrollView setContentOffset:CGPointMake(self.imgW * (self.imageCount), 0) animated:NO];
      }
    
      self.pageControl.currentPage = (self.scrollView.contentOffset.x + self.imgW * 0.5f) / self.imgW - 1;
    
    }
    
    @end
    
    

    以上就是使用UIScrollView实现图片的轮播的功能,如有疑问大家可以留言,也可以到本站社区留言讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    资源下载

    相关声明:

    《iOS 应用开发最佳实践 》PDF 超清版下载资源由用户 衡博文 于 2022-01-01 11:16:39 分享至百度网盘。仅供想学习iOS开发的网友交流使用,专题参考:应用开发iOS,iOS开发,

    相关资源

    • iOS10快速开发:18天零基础开发一个商业应用

      iOS10快速开发:18天零基础开发一个商业应用

      本书以构建一个仿Instagram项目的实践案例贯穿全书,将所有知识点融入到实践当中,使大家真正理解和掌握如何通过XcodeSDK和Swift3.0语言来开发iOS应用程序。

      大小:120 MBiOS

      立即下载
    • IOS 8开发指南

      IOS 8开发指南

      本书内容完全基于当前iOS的最新版本iOS8,详细讲解了iOS8的最新功能和API。另外,本书中使用Objective-C和Swift两种语言进行编写,从当前广大程序员追捧Swift的热度来看,本书必将引领广大读者的

      大小:166.4 MBIOS8

      立即下载
    • iOS移动开发从入门到精通

      iOS移动开发从入门到精通

      本书采用丰富的实例,直观的代码展示,向读者形象地展现了在创建一款优秀的iOS应用程序时,所需要的大部分知识和技巧。通过对本书的学习,读者可以建立起iOS 10技术的思想框架,并且对

      大小:53.8 MBiOS

      立即下载
    • iOS开发快速进阶与实战

      iOS开发快速进阶与实战

      iOS开发快速进阶与实战 作者:黄新宇 著 出版时间:2018 《iOS开发快速进阶与实战》偏向于iOS应用的实际开发,介绍了iOS开发过程中的技术实现方案和原理,包含基本知识、底层常用技术原理、开发技巧,以及技能扩展等书各方面,其中大部分章节以实际项目开发中常见的问题为背景,内容阐述方式包括介绍原理、对比技术方案、实际应用、引导读者思维等,并在每一章最后部分归纳总结本章的重点内容。 本书既可以作为高等学校计算机软件技术课程的

      大小:13.63MBiOS开发

      立即下载
    • iOS移动开发从入门到精通(第2版)

      iOS移动开发从入门到精通(第2版)

      iOS移动开发从入门到精通 出版时间: 2018 本书由资深iOS开发工程师精心编撰,系统地介绍了使用iOS 10+Swift 3+Xcode 8开发移动应用的关键技术。本书共分三篇,*篇为基础篇,主要介绍了iOS开发基础知识,包括iOS系统的历史、Swift 3.0语言、UI界面构建技术、视图控制器、常用的控件、表和集合视图、视图和层、声音、视频、动画等。第二篇为进阶篇,主要介绍了Alamofire网络服务、数据的持久化、多线程、CoreText、CoreImage、Storyboard、自动化测试、性

      大小:39.26MB移动开发

      立即下载
    • iOS 开发从入门到精通

      iOS 开发从入门到精通

      iOS 开发从入门到精通 作者:熊斌 编著 出版时间:2013 熊斌编著的《iOS开发从入门到精通》基于Apple最新发布的iOS 6编写。循序渐进地介绍了从事iOS开发所需的基 本知识。 《iOS开发从入门到精通》分为21章,具体内容包括:iOS开发入门。Objective-C语言。Cocoa Touch 开发的基本知识。界面布局Xcode InterfaceBuilder的基本知识,使用 Xcode编写MVC 程序,使用文本、键盘和按钮,基本控件的使用。高级控件的使用,提醒处 理,场景和弹出框处理,工

      大小:194.55MBiOS开发

      立即下载

    学习笔记

    17小时9分钟前回答

    Vue开发中整合axios的文件整理

    前言 大家在vue日常开发中,不可避免要整合axios,这里简单记录一下整合中的文件,方便以后使用查找。下面来看看详细的介绍。 整合方法 整合文件axios.js import axios from 'axios';// 适配vue-resourceconst instance = axios.create();instance.interceptors.request.use(config= {//Serialize.decode(config);return config;});instance.interceptors.response.use(response= {return response.data;}, err= {if (err.response) {axios.post('/v1/error', err.response);return Promise.reject(err.response.data);}return Promise.reject({ code: 1024, message: err.message });});function plugin(Vue) {if (plugin.installed) {return;}Vue.http = instance;}if (typeof window !== 'undefined' window.Vue) {window.Vue.use(plugin);}export default plugin; vue插件使用 app.js……

    22小时55分钟前回答

    微信小程序开发之IOS和Android兼容的问题

    微信小程序开发之IOS和Android兼容的问题 一、时间转换问题: 这不只是小程序上面的问题是ios系统 都有这个问题 就是new Date("2017-06-16") 在IOS会出现NAN的情况所以对于时间转换需要另行封装,解决方案如下 1.替换”-“为”/“ 2.删除”.“后面的字符串(带毫秒也会有问题) 代码如下: /** * 字符串转换为时间 * @param {String} src 字符串 */ strToDate(dateObj){ dateObj = dateObj.replace(/T/g, ' ').replace(/\.[\d]{3}Z/, '').replace(/(-)/g, '/') dateObj = dateObj.slice(0, dateObj.indexOf(".")) return new Date(dateObj) } 二、fixed定位问题 整个页面的fixed定位,在ios下下拉会触发下拉事件,但是没有动画效果。Android就能正常运行 flex中使用 绝对定位,ios出现……

    12小时58分钟前回答

    vue+axios+promise实际开发用法详解

    axios它是基于promise的http库,可运行在浏览器端和node.js中,然后作者尤雨溪也是果断放弃了对其官方库vue-resource的维护,直接推荐axios库,小编我也是从vue-resource转换过来的,差别说不来,我们讲一下axios在实际开发中的用法 axios特点 1.从浏览器中创建 XMLHttpRequests 2.从 node.js 创建 http 请求 3.支持 Promise API 4.拦截请求和响应 (就是有interceptor) 5.转换请求数据和响应数据 6.取消请求 7.自动转换 JSON 数据 8.客户端支持防御 XSRF 安装axios和qs npm i axios --savenpm i qs--save 创建项公共模块API 我是用vue-cli创建的项目在src-util-api.js(公共请求模块js) 引入axios和qs import axios from 'axios' 有时候向后端发送数据,后端无法接收,考……