`

ios开发基础问题总结

 
阅读更多


 订阅

1,如何进入应用后首先展示图片,然后程序继续运行

只需要将所需要的图片引入工程,并重命名为Default.png(注意大小写)。另外,在模拟器中调试时Default.png可以放在任意文件夹下,但是据说真机上运行时Default.png必须位于根目录下(这个没有验证过)。

2,如何发送HTTP请求

iPhone OS内置有CFNetWorik框架可以使用。但是这里推荐使用ASIHttpRequest框架,官网上面有详细的说明和使用教程。

3,如何使用JSON数据

这个没得说,当然是json-framework,苹果官方都是使用它来解析JSON的。

4,如何点击屏幕空白位置时,隐藏键盘

建立一个全屏幕的button,将类型设置为Custom,这样它就没有边框了,然后将该按钮拖到相应图层位置让它不至于遮住其他元素,最后将它关联到相应的target-action就OK了。如下图所示:



5,如何在IB中使用UITableView中的自定义的Cell

自定义UITableViewCell的子类,这里详细介绍了实现方式。

6,如何根据字数控制UILabel的高度,以及如何定位Cell中的元素

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath {
    /* 其他代码 */
 
    // UILable的宽度
    CGFloat contentWidth = 259.000;
    // 根据字体计算高度
    UIFont *baseFone     = [UIFont systemFontOfSize:13];
    // 获取UILabel将要显示的数据
    NSString *content    = [data objectForKey:@"content"];
    // 1000仅仅是个约数,只要保证content能显示完整就行
    // 在IB中要把UILabel的换行类型设置为UILineBreakModeWordWrap
    CGSize  contentSize  = [content sizeWithFont:baseFone constrainedToSize:CGSizeMake(contentWidth,10000) lineBreakMode:UILineBreakModeWordWrap];
    // IB中一定要将UILabel的Layout属性的Lines设置为0,以保证宽度自适应
    CGRect  frame        = [cell.contentLabel textRectForBounds:cell.contentLabel.frame limitedToNumberOfLines:0];
    frame.size.height    = size.height;
    // 通过frame.origin.x 和 frame.origin.y来定位元素
    frame.origin.y       = otherHeight + cell.otherLabel.frame.size.height;
    cell.contentLabel.frame = frame;
 
    /* 其他代码 */
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    /* 其他代码 */
 
    // UILable的宽度
    CGFloat contentWidth = 259.000;
    // 根据字体计算高度
    UIFont *baseFone     = [UIFont systemFontOfSize:13];
    // 获取UILabel将要显示的数据
    NSString *content    = [data objectForKey:@"content"];
    // 1000仅仅是个约数,只要保证content能显示完整就行
    // 在IB中要把UILabel的换行类型设置为UILineBreakModeWordWrap
    CGSize  contentSize  = [content sizeWithFont:baseFone constrainedToSize:CGSizeMake(contentWidth,10000) lineBreakMode:UILineBreakModeWordWrap];
 
    /* 下面就可以通过contentSize.height计算Cell的高度了 */
 
    /* 其他代码 */
}

7,如何异步加载图片等数据

大致思路为两步:(1) 加载tableView时读取图片缓存,如果存在则显示,如果不存在则异步下载;(2) 下载图片信息成功,更新图片缓存,重新加载tableView的数据

示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath {
    /* 其他代码 */
 
    // 用户头像
    UIImage *userPic = [self cachedImageForUrl:[NSURL URLWithString:url]];
    cell.userPicView.image = userPic;
 
    /* 其他代码 */
}
 
- (UIImage *)cachedImageForUrl:(NSURL *)url {
    id cachedObject = [self.cachedImage objectForKey:url];
    if (cachedObject == nil) {
        //防止reloadData时重复提交请求,添加占位符
        [self.cachedImage setObject:@"Loading..." forKey:url];
        //异步下载图片
        ASIHTTPRequest *picRequest = [ASIHTTPRequest requestWithURL:url];
        picRequest.delegate = self;
        picRequest.didFinishSelector = @selector(didFinishRequestImage:);
        picRequest.didFailSelector   = @selector(didFailRequestImage:);
        [self.queue addOperation:picRequest];
        // 更新状态栏的网络标示
        [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
    }else if ( ![cachedObject isKindOfClass:[UIImage class]] ) {
        cachedObject = nil;
    }
    return cachedObject;
}
 
- (void)didFinishRequestImage:(ASIHTTPRequest *)request {
    NSData *imageData = [request responseData];
    UIImage *image = [UIImage imageWithData:imageData];
    if (image != nil) {
        [self.cachedImage setObject:image forKey:request.url];
        [self.tableView reloadData];
    }
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}
 
- (void)didFailRequestImage:(ASIHTTPRequest *)request {
    NSLog(@"Error Download Image: %@", request.error);
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}

8,ASIHttpRequest的一个bug的修复
请见我的一个提问和解决(6楼)

分享到:
评论

相关推荐

    ios开发--Objective-C 基础总结-(重点已标识)

    Objective-C 是 iOS 开发的基础,本篇文章主要对 Objective-C 的基础知识进行了总结,特别标注了重点内容,适合初学者快速入门并转向 iOS 平台开发。 首先,我们要理解面向对象编程的基本概念。在 Objective-C 中,...

    iOS 开发总结

    这份"iOS开发总结"文档可能涵盖了从基础概念到高级技术的各种知识点,旨在帮助开发者提升技能和解决问题。 首先,iOS开发主要基于Apple的Swift编程语言,这是一种现代化、高性能的语言,具有安全性和易于读写的特点...

    iOS开发前期准备

    iOS开发前期准备是每个想要踏入iOS应用开发领域的程序员必须经历的阶段。这一阶段主要包括对iOS开发的基本情况了解、开发环境的搭建以及获取必要的软件开发者证书。 2.1 iOS开发基本情况介绍 iOS开发主要针对苹果...

    IOS开发环境搭建和简单实例

    在进行iOS开发之前,开发环境的搭建是开发者必须经历的初始步骤。本文将详细介绍如何搭建iOS开发环境,并提供一些简单的开发实例来帮助初学者快速入门。 ### iOS开发环境搭建 #### 注册Apple ID 为了下载开发所需...

    总结iOS开发代码实践总结iOS开发技巧共16页.pdf

    这份"总结iOS开发代码实践总结iOS开发技巧共16页.pdf"的文档,显然是一份宝贵的资源,它涵盖了多个方面的知识点,旨在帮助开发者提升其iOS应用开发技能。以下是基于该文件标题和描述可能包含的一些关键知识点的详细...

    ios 基础知识 汇总文档

    在iOS开发中,多线程技术是一项重要的技能,能够显著提高应用的响应速度及处理能力。本文将深入探讨iOS支持的不同多线程编程范式,并重点介绍`NSThread`的基础使用方法。 #### iOS多线程编程范式 iOS支持多种多...

    iOS开发基础教程全书ppt课件汇总(完整版).pptx

    【iOS开发基础】 iOS开发是为苹果公司的移动设备,如iPhone、iPad和Apple Watch创建应用程序的过程。这一领域的基础知识涵盖操作系统、开发环境、编程语言等多个方面。 【macOS】 macOS是苹果公司为Macintosh系列...

    iOS基础知识大总结

    iOS开发基础涵盖了许多关键知识点,包括面向对象编程的三大特性:多肽(多态)、继承和封装,以及网络通信、数据解析和用户界面设计。在iOS应用开发中,这些概念和技术构成了开发流程的基础。 首先,多态(多肽)...

    IOS开发视频全集

    本套视频教程全面覆盖了iOS开发的基础理论和技术实践,适合不同水平的学习者。通过系统学习,你将能够掌握iOS应用开发的核心技能,并具备独立完成项目的能力。希望这些知识点能够帮助你更好地理解和掌握iOS开发的...

    2018iOS面试题汇总

    ### 2018 iOS面试题汇总解析 #### 一、设计模式的理解及常见类型 设计模式是指在软件开发过程...以上总结了2018年iOS面试题中涉及的一些核心知识点,希望能够帮助开发者更好地理解和掌握iOS开发中的重要概念和技术。

    ios开发实例

    总结,"ios开发实例"涵盖的内容广泛,包括Swift语言基础、应用生命周期管理、UI设计与事件处理、网络编程、数据存储以及测试调试等多个方面。通过实践这些小项目,开发者可以加深对iOS开发的理解,提高自己的编程...

    iOS5开发基础教程

    通过以上章节的介绍,《iOS5开发基础教程》为读者提供了一个全面而系统的iOS开发学习路径。无论你是完全的新手还是有一定经验的开发者,都可以从中获得宝贵的知识和实践经验。希望你能充分利用这本书的内容,开启你...

    iOS9应用开发基础教程

    ### iOS9应用开发基础教程知识点概览 #### 一、iOS9系统简介及新特性 - **Siri语音助手智能化**:iOS9中的Siri变得更加智能,能够理解上下文并根据用户的行为习惯提供更加个性化的服务。 - **新增News新闻聚合应用...

    iOS开发切换视图示例

    总结来说,iOS开发中的视图切换是构建用户界面的关键操作,理解并掌握多种视图切换方法对提升开发技能至关重要。通过实践"View Switcher"这样的示例,新手能够快速上手,并为后续更复杂的iOS应用开发打下基础。

    iOS开发程序员应届生简历

    本文将从标题、描述、标签和部分内容四个方面对 iOS 开发程序员应届生简历进行分析和总结。 一、标题:iOS 开发程序员应届生简历 标题表明了这个简历的主要内容,即 iOS 开发程序员应届生简历。这个标题简单、明确...

    iOS开发教程(大神原创笔记)副本.pdf

    本教程主要围绕iOS开发的基础知识和技术要点展开,旨在帮助初学者快速掌握iOS应用开发的基本流程和核心概念。以下是从该文档标题、描述及部分内容中提炼出的关键知识点: 1. **iOS开发环境搭建** 2. **Unix/Linux...

    IOS开发书籍

    - **结构安排**:本书分为六个主要部分,依次介绍了iOS开发的基础知识、核心概念和技术要点。 - **第一部分**:“Hello World!创建你的第一个iPhone App”,通过简单的“Hello World”应用介绍了iOS开发的基本流程...

Global site tag (gtag.js) - Google Analytics