iPhone开发常问的十个问题(2012年3月版)

2024-06-01 06:58

本文主要是介绍iPhone开发常问的十个问题(2012年3月版),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

今天去stackoverflow.com上看了一下iPhone标签下排名最高的10个问题,将它们整理出来,希望这些常见问题能帮到一些iPhone开发的初学者。本来想把答案也翻译过来的,后来发现答案资料通常都比较复杂,翻译起来太麻烦。所以大家还是看英文的答案吧,我只顺带用中文总结一下答案。

问题一: 有哪些iPhone开发和Objective-C的入门资料

这个确实是最常问的问题了。对于我个人来说,入门时所看的资料主要是《From C++ to Objective-c》和《iPhone开发基础教程》,另外,我也把stanford的iphone视频课程看完了,链接是:http://www.stanford.edu/class/cs193p/cgi-bin/index.php

个人体会是边学边做,上手会比较快。编程这东西,不自己上手做做,没感觉。另外,如果入门之后想提高的话,我觉得还是需要把苹果每年的WWDC视频都下载下来看看,里面讲的东西还是非常有用的, 链接是: http://developer.apple.com/WWDC/

问题二: 如何在Windows中进行iPhone开发

大家还是把Windows想太全能了。至少在开发这一块上,Windows对于程序员来说,还是相当不友好的。这一点在使用Mac系统后,差别一下子就体会到了。就比如说git,在Windows下使用就有很多问题。另外话说回来,Mac机也不是什么都好,在中国,Mac系统相关的国内软件相当少,Mac下的游戏也相对Windows少很多,如果你想用Mac机来娱乐的话,会比较受限制。

问题三: 有哪些基于iPhone的base64编码的库

从这个问题的答案中,我选了一个我个人觉得比较好用的Base64编码库,放到我的Xcode Tool中了。地址是:https://github.com/tangqiaoboy/xcode_tool/tree/master/Encoding。

问题四: 如何判断当前iPhone是否联网

最佳的答案是用苹果提供的Reachability类。详细的使用方式大家自己看答案吧,写得很清楚。

问题五: 如何做一个快速并且轻量级的PDF阅读器

我暂时没这个需求,就没有详细看答案。

问题六: 如何让我的app支持打开一种格式的文件

在iPhone 3.2以上系统中,使用URL schemes即可完成这个需求。详细见答案。

问题七: 当键盘出现的时候,如何让UITextField自动上移

对于iPhone界面控件的操作应该算是开发中必备的能力。键盘出现的时候上移相关的控件算是常见的需求,但是从这么多人问这个问题就可以看出,还是有很多人对这些需求的实现方式有疑问。

对于这个问题,主要是通过增加对键盘出现和消失的相应的Notification,然后在键盘出现和消息的时候,通过设置相关控件的frame来实现。相关代码如下,来源自stackoverflow。

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
-(void)textFieldDidBeginEditing:(UITextField *)sender
{
    if ([sender isEqual:_textField])
    {
        //move the main view, so that the keyboard does not hide it.
        if  (self.view.frame.origin.y >= 0)
        {
            [self setViewMovedUp:YES];
        }
    }
}

//method to move the view up/down whenever the keyboard is shown/dismissed
-(void)setViewMovedUp:(BOOL)movedUp
{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.5]; // if you want to slide up the view

    CGRect rect = self.view.frame;
    if (movedUp)
    {
        // 1. move the view's origin up so that the text field that will be hidden come above the keyboard 
        // 2. increase the size of the view so that the area behind the keyboard is covered up.
        rect.origin.y -= kOFFSET_FOR_KEYBOARD;
        rect.size.height += kOFFSET_FOR_KEYBOARD;
    }
    else
    {
        // revert back to the normal state.
        rect.origin.y += kOFFSET_FOR_KEYBOARD;
        rect.size.height -= kOFFSET_FOR_KEYBOARD;
    }
    self.view.frame = rect;

    [UIView commitAnimations];
}


- (void)keyboardWillShow:(NSNotification *)notif
{
    //keyboard will be shown now. depending for which textfield is active, move up or move down the view appropriately

    if ([_textField isFirstResponder] && self.view.frame.origin.y >= 0)
    {
        [self setViewMovedUp:YES];
    }
    else if (![_textField isFirstResponder] && self.view.frame.origin.y < 0)
    {
        [self setViewMovedUp:NO];
    }
}


- (void)viewWillAppear:(BOOL)animated
{
    // register for keyboard notifications
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:)
                                                 name:UIKeyboardWillShowNotification object:self.view.window];
}

- (void)viewWillDisappear:(BOOL)animated
{
     // unregister for keyboard notifications while not visible.
    [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
}

问题八: 有关UIImagePickerController, Image, Memory的问题和答案整理

这个其实是一个相关问题的汇总贴。其中对于UIImage的操作示例挺有用处。做iPhone开发,总是会遇到一些图象处理相关的东西,能够从这儿积累一些相应的知识,到真正自己需要的时候帮助就大了。

问题九: 如何对包含自定义元素类型的NSMutableArray排序

答案讨论了各种方法,下面是其中提到的最简单的方法:定义一个比较用的selector

1
2
3
4
5
6
- (NSComparisonResult)compare:(Person *)otherObject {
    return [self.birthDate compare:otherObject.birthDate];
}

NSArray *sortedArray;
sortedArray = [drinkDetails sortedArrayUsingSelector:@selector(compare:)];

问题十: 如何在iPhone中使用自定义字体

答案讨论了在iOS3.2以前及以后的做法,现在都5.1了,估计支持3.2以前的app很少了吧。所以我把iOS3.2以后的办法附在下面。简单来说,就是iOS3.2苹果支持自定义字体,只需要在Info.plist文件中设置UIAppFonts相关的信息即可。步骤如下:

  1. 将自定义字体加到你的工程资源文件中
  2. 在 info.plist 文件中增加一名为 UIAppFonts 的key
  3. 将这个key修改成array
  4. 将你用到的所有字体的名字,作为这个array的值,一项一项填进去(包括扩展名)
  5. 保存 info.plist
  6. 现在就可以在代码中直接用[UIFont fontWithName:@”CustomFontName” size:12]来取得你自定义的字体了。

这篇关于iPhone开发常问的十个问题(2012年3月版)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1020292

相关文章

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

MySQL新增字段后Java实体未更新的潜在问题与解决方案

《MySQL新增字段后Java实体未更新的潜在问题与解决方案》在Java+MySQL的开发中,我们通常使用ORM框架来映射数据库表与Java对象,但有时候,数据库表结构变更(如新增字段)后,开发人员可... 目录引言1. 问题背景:数据库与 Java 实体不同步1.1 常见场景1.2 示例代码2. 不同操作

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错

如何解决Spring MVC中响应乱码问题

《如何解决SpringMVC中响应乱码问题》:本文主要介绍如何解决SpringMVC中响应乱码问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring MVC最新响应中乱码解决方式以前的解决办法这是比较通用的一种方法总结Spring MVC最新响应中乱码解

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

pip无法安装osgeo失败的问题解决

《pip无法安装osgeo失败的问题解决》本文主要介绍了pip无法安装osgeo失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 进入官方提供的扩展包下载网站寻找版本适配的whl文件注意:要选择cp(python版本)和你py