iOS5编程--官方例子代码的研究--2.UICatalog-3

高通Camera AWB跳变问题实战:从夕阳场景到参数调优的完整避坑指南 本文深入解析高通Camera AWB跳变问题,特别是在夕阳场景下的色温突变现象。通过分析灰区统计失效、光源混合干扰等成因,提供从参数调优到诊断工具链的完整解决方案,包括动态灰区扩展算法、色温平滑过渡方案及高通平台特定优化技巧,帮助工程师有效解决AWB跳变问题。 阅读详情

6.TextViewController类

这里我们第一个关注的函数就是setupTextView
我把相应的注释写在下面,类似的其他的就不再解释。

self.textView = [[[UITextView alloc] initWithFrame:self.view.frame] autorelease];

使用alloc申请内存,并且指定位置。这里调用了autorelease,同时在dealloc函数中调用了[textView release];看似好像有问题的。因为内存管理的一个很重要的地方就是不能对一个内存计数器为0 的地址再次释放(造成的后果就是程序crash)。这里我们应该看到函数viewDidUnload的地方,self.textView = nil;因为viewDidUnload肯定早于dealloc被调用,所以在dealloc函数中,[textView release],相当于[nil release];在Objective-C中,任何发往nil的消息都会被忽略,不会造成任何后果。

但是我这里小声嘀咕一下,我认为这样的方式不是很好,我建议大家以后写代码的时候,这样的情况不要使用autorelease,同时在viewDidUnload中加入[self.textView release];在dealloc中不需要再次release这个指针。


self.textView.textColor = [UIColor blackColor];

设置文本的颜色,这里需要关注一下UIColor这个类,这个类的用法非常简单,看一下就可以了。

self.textView.font = [UIFont fontWithName:@"Arial" size:18.0];

这里是设置字体及大小,这个也是很简单,不过有时候我们会遇到如何设置自定义字体。

self.textView.delegate = self;

设置text view的delegate为自己。所谓delegate即是text view发生一些事件的时候的回调函数而已。

self.textView.backgroundColor = [UIColor whiteColor];

设置背景颜色。

self.textView.text = @"Now is the time for all good developers to come to serve their country.\n\nNow is the time for all good developers to come to serve their country.";

设置文本

self.textView.returnKeyType = UIReturnKeyDefault;

设置软件键盘的回车键。

self.textView.keyboardType = UIKeyboardTypeDefault; // use the default type input method (entire keyboard)

设置键盘。

self.textView.scrollEnabled = YES;

设置是否滚动。

// this will cause automatic vertical resize when the table is resized

self.textView.autoresizingMask = UIViewAutoresizingFlexibleHeight;

这个地方设置text view是否随父view一起调整大小。

// note: for UITextView, if you don't like autocompletion while typing use:

// myTextView.autocorrectionType = UITextAutocorrectionTypeNo;

这个设置是否自动更正输入内容。

[self.view addSubview: self.textView];

加载在view上。


这里需要加入一些关于view controller生命周期中几个重要函数的说明。

由init、loadView、viewDidLoad、viewDidUnload、dealloc的关系说起

init方法

  • 在init方法中实例化必要的对象(遵从LazyLoad思想)
  • init方法中初始化ViewController本身

loadView方法

  • 当view需要被展示而它却是nil时,viewController会调用该方法。不要直接调用该方法。
  • 如果手工维护views,必须重载重写该方法
  • 如果使用IB维护views,必须不能重载重写该方法
  • loadView和IB构建view

viewDidLoad方法

  • 重载重写该方法以进一步定制view
  • 在iPhone OS 3.0及之后的版本中,还应该重载重写viewDidUnload来释放对view的任何索引
  • viewDidLoad后调用数据Model

viewDidUnload方法

  • 当系统内存吃紧的时候会调用该方法(注:viewController没有被dealloc)
  • 内存吃紧时,在iPhone OS 3.0之前didReceiveMemoryWarning是释放无用内存的唯一方式,但是OS 3.0及以后viewDidUnload方法是更好的方式
  • 在该方法中将所有IBOutlet(无论是property还是实例变量)置为nil(系统release view时已经将其release掉了)
  • 在该方法中释放其他与view有关的对象、其他在运行时创建(但非系统必须)的对象、在viewDidLoad中被创建的对象、缓存数据等
  • release对象后,将对象置为nil(IBOutlet只需要将其置为nil,系统release view时已经将其release掉了)
  • 一般认为viewDidUnload是viewDidLoad的镜像,因为当view被重新请求时,viewDidLoad还会重新被执行
  • viewDidUnload中被release的对象必须是很容易被重新创建的对象(比如在viewDidLoad或其他方法中创建的对象),不要release用户数据或其他很难被重新创建的对象

dealloc方法

  • viewDidUnload和dealloc方法没有关联,dealloc还是继续做它该做的事情

viewWillAppear和viewDidDisappear这两个方法是view将要出现和消失的时候调用,

[[NSNotificationCenter defaultCenter] addObserver:self

                                             selector:@selector(keyboardWillShow:)

                                                 name:UIKeyboardWillShowNotification

                                               object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self

                                             selector:@selector(keyboardWillHide:)

                                                 name:UIKeyboardWillHideNotification

                                               object:nil];

这里注册两个函数为系统事件的回调函数,一个事件UIKeyboardWillShowNotification是键盘将要出现。一个事件UIKeyboardWillHideNotification是键盘将要消失。

UIKeyboardWillShowNotification键盘将要出现的事件响应函数为:


- (void)keyboardWillShow:(NSNotification *)aNotification 

{

参数为事件本身,除了这个参数,还可以加入一个参数,就是在addObserver的时候的object。上面传入的是nil。

// the keyboard is showing so resize the table's height

CGRect keyboardRect = [[[aNotification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];

取得键盘的位置。

    NSTimeInterval animationDuration =

[[[aNotification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];

由于键盘出现是一个动画,动画的执行需要一定的时间,这里取得这个时间直。

    CGRect frame = self.view.frame;

    frame.size.height -= keyboardRect.size.height;

下面开始一个动画,动画我会在另外的例子中讲解,这里只需要知道,把view的大小变大,高度增加键盘的高度。加上上面的self.textView.autoresizingMask = UIViewAutoresizingFlexibleHeight;调用就可以出现输入的时候text view在输入东西过多的时候的自动滚动。可以试验一下。

    [UIView beginAnimations:@"ResizeForKeyboard" context:nil];

    [UIView setAnimationDuration:animationDuration];

    self.view.frame = frame;

    [UIView commitAnimations];

}

关于后面键盘消失的时候的回调函数,就不再讲述。

值得一提的时候,我们必须在合适的时候注销这些回调函数,这里就是view消失的时候。

其他的代码是关于导航栏的设置,会在导航例子中讲解。




假期搞定!2026国社科申报AI全攻略指南:从选题到创新,7大核心要点手把手教你! 最后给大家推荐的400多所高校教师都在用的AI平台——高级学术版专业应用平台,集成了国际主流学术应用,以及ChatGPT、Claude、Gemini、Grok等Al大模型的高级版本平台,还有,可以辅助大家高效完成科研和学术写作任务,当然撰写硕博论文,课题、职称论文、国社科、国自然基金本子也是手拿把掐。你的任务是:用高度凝练的方式说明在(某一明确国家战略 / 政策方向,如:中国式现代化、共同富裕、基层治理现代化、数字中国、文化强国、国家安全等)背景下,我究竟要研究一个什么“具体而可操作的问题”。 阅读详情

相关推荐

智能车竞赛环岛处理全解析:从图像识别到状态机控制

在嵌入式系统与自动控制领域,状态机是管理复杂系统行为、实现清晰逻辑流的核心设计模式。其原理在于定义一组有限的状态,以及触发状态迁移的事件和条件,从而将连续、模糊的过程分解为离散、确定的阶段。这种技术在机器人导航、工业自动化等场景中价值显著,尤其适用于需要应对多种场景、做出序列化决策的场合。在智能车竞赛中,赛道元素识别与路径跟踪是典型应用,其中环岛作为连续闭环的复杂场景,对系统的鲁棒性和决策连贯性提出了更高要求。通过图像处理提取赛道边线、宽度和曲率等特征,结合陀螺仪等传感器数据,可以构建一个专门处理环岛的状态

weixin_34033624的博客 561

IOS 5编程 -2 -准备工作。

1.1 硬件和软件要求 iPhone和android是目前手机的两个主流操作系统,也是开发人员工作的两大阵营,从国内现有数据看,android开发人员数量是iPhone开发人员数量的数倍,其中的奥秘不在于java比objective-C流行,而是学习android开发可以近于零成本开始,而iPhone的开始成本需要近万元。当然这样的另外一个后果就是,iPhone开发人员的工资普遍比android...

sogotobj 133

STM32H745xI双核芯片SMPS/LDO配置误区:从复位失败到精准排查的实战复盘

本文详细分析了STM32H745xI双核芯片在SMPS/LDO配置中的常见误区,特别是复位失败问题的排查过程。通过对比参考板与故障板的波形数据,揭示了电感选型不当导致的电源稳定性问题,并提供了硬件设计检查清单和调试技巧,帮助开发者避免类似陷阱。

weixin_42531588的博客 265

iOS5编程--官方例子代码的研究

iOS5编程--官方例子代码的研究--2.UICatalog-3http://www.1000phone.net/thread-7922-1-2.html iOS5编程--官方例子代码的研究--2.UICatalog-4 http:...

weixin_34249367的博客 85

常见的电容有哪些

电容在电路板中非常常见,类别纷繁复杂,本文化繁为简,主要介绍下常见电容。

qq_40170041的博客 768

从药企研发视角:如何用GNN提升分子水溶性预测准确率?PyTorch+ESOL全案例

本文从药企研发的实际需求出发,详细介绍了如何利用图神经网络(GNN)技术,结合PyTorch框架和ESOL数据集,构建并优化分子水溶性预测模型。通过完整的代码案例,深入探讨了分子图数据处理、GNN架构设计、超参数调优以及模型评估与解释等关键环节,旨在帮助研发团队提升预测准确率,从而更高效地筛选和优化候选药物分子。

weixin_29054399的博客 292

iOS5编程--官方例子代码的研究--2.UICatalog-4

7.ImagesViewController类 这个类演示的imageview和我们大多数时候使用的不一样,多数时候我们会给imageview设置一个图片,或者更换一个图片,但是同时我们只设置一个图片。 这个例子里面是设置一组图片,然后轮流显示这些图片,我们可以利用这个技术来做一个简单的动画,如果这组图片是一个动作的分解的话。 self.imageView.animationImages

NickTang的专栏 2597

Python 爬虫实战:爬取豆瓣读书评论并分析

摘要:本文以豆瓣读书《活着》评论数据为例,详细讲解Python爬虫开发与文本分析全流程。首先通过requests库爬取评论数据,解决分页、反爬等问题;然后利用BeautifulSoup解析页面提取评论内容、评分等核心信息;最后结合jieba进行关键词提取、snownlp完成情感分析,并通过可视化展示结果。分析显示该书评分以5星为主(占比70%),正面评论达82%,核心关键词为"活着""余华""生命"。全文包含完整代码与详细解析,帮助读者掌握非结构化

2503_91057718的博客 1497

iOS5编程--新增控件stepper的使用

在iOS5中,新增了一个控件,stepper,这个控件的使用非常简单 1.新建一个Single View Application,打开Viewcontroller.xib 2.在view上加入一个stepper控件 3.如下图,设置相关属性 stepper的Val

NickTang的专栏 7340

RK3568平台(内存篇)DDR定频修改

如果需要DDR定频,则还需要注释掉其他多余的DDR频率,保留一个即可,例如注释掉opp-528000000、opp-1068000000、opp-1560000000,保留opp-2750000000则是定频最大频率。如果回退必须将 dmc_opp_table节点 的其他频率打开,否则系统无法选择到其他频率运行。ddr频点不对,先把ddr变频关掉,关闭后系统就不会一直重启了,以下是修改DDR频点的。rk3588修改定频节点在rk3588s.dtsi 的 dmc: dmc。

weixin_49303682的博客 1620

一点击打印电脑就卡死?资源管理器停止工作的解决方法

Windows11共享的HP1022n打印机导致客户端打印时资源管理器崩溃卡死,电脑停止工作。

gary18的专栏 578

Appium自动化测试之IOS模拟器与真机

IOS常用控件定位方式 name:id定位 lable:accessibility定位 value:xpath定位 IOS模拟器 环境:appium-desktop 1.15.1 IDE:PyCharm 应用:UICatalog.app.zip(模拟器运行可以用我编译好的,链接下载地址: https://pan.baidu.com/s/1SFsFVizH_EhxeN2niMiP9g...

韩小北 1103

LabVIEW实现HTTP通信

本节简要介绍HTTP通信的基础知识,并以工业物联网平台TLINK中云端设备的数据发布设计为例,阐述互联网环境下HTTP客户端应用程序设计的基本方法。重点讲解工业物联网平台TLINK中HTTP设备的创建、通信数据帧的构造与测试。

不脱发的程序猿 1545

【原】iOS优秀开源项目总结

网上此类帖子博客不少,不过自己没整理过的东西始终是别人,现开此贴加以总结,持续更新!站在巨人的肩膀上才能站得高看得远。 第一部分:UI类 1、毛玻璃模糊效果 RNFrostedSidebar 一个iOS 7设计风格的控制中心式的导航栏——毛玻璃效果, 扁平化设计以及定制动画全部融于其中。地址: https://github.com/rnystrom/RNFroste...

weixin_30315435的博客 71

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

NSPredicate iOS中非常强大的过滤器

在APPLE的官方Demo:UICatalog中实现UISearchBar模糊搜索功能是这么做的: 1 - (void)viewDidLoad { 2 [super viewDidLoad]; 3 4 self.allResults = @[@"Here's", @"to", @"the", @"crazy", @"ones.", @"The", @"misfits."

Louis的专栏 739

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

基于Appium的ios自动化教程

Appium作为一个开源的、跨平台的自动化测试工具,适用于测试原生或混合型移动App,它使用WebDriver协议驱动IOS,Android和Windows应用程序,本篇文章介绍实现ios自动化测试 01Appium实现iOS自动化测试 01、启动应用 填写 capability信息 app 获取 uuid获取 点击Window---->Devices--->在右侧可查看到identifier identifier,即为我们获取到的iPhone 的uuid 02、元素获

1057

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

iOS中非常强大的过滤器:NSPredicate

在APPLE的官方Demo:UICatalog中实现UISearchBar模糊搜索功能是这么做的: 1 - (void)viewDidLoad { 2 [super viewDidLoad]; 3 4 self.allResults = @[@"Here's", @"to", @"the", @"crazy", @"ones.", @"The", @"misfits.",

oldcatwarrior的博客 1802
上一篇: iOS 人机界面指南
下一篇: iOS5编程--官方例子代码的研究--2.UICatalog-4
NickTang
博客等级 码龄24年 261粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值