添加收信人后,收信人区域的高度会自动增长,删除收信人后,收信人区域的高度会相应降低,主要方法如下:
-(void)refreshReceiverView:(int)flag { if(flag == MSGV_DEL_CONTACT) { NSMutableArray *temA = [[NSMutableArray alloc] init]; for(GPMsgReceiverView *msgV in [toContainerView subviews]) { [temA addObject:msgV]; [msgV removeFromSuperview]; } receiverRowIndex = 0; indexOfFirstNewLine = 0; toContainerView.frame = CGRectMake(0.0, 0.0, 320, 44.0+receiverRowIndex*44.0); [mainView reloadData]; for(GPMsgReceiverView *msgV1 in temA) { int count = [[toContainerView subviews] count]; int length = count - indexOfFirstNewLine; NSArray *lineCheckArray = [[toContainerView subviews] objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(indexOfFirstNewLine, length)]]; int totalWidth = 0; int oldWidth = 0; for(GPMsgReceiverView *mv in lineCheckArray) { totalWidth += mv.frame.size.width; oldWidth += mv.frame.size.width; //some line, from the first to the last } totalWidth += msgV1.frame.size.width; //check if add current beyond the width if(totalWidth < 250) { msgV1.center = CGPointMake(oldWidth + msgV1.frame.size.width/2 + 5.0, 22.0+receiverRowIndex*44.0); } else { indexOfFirstNewLine = [[toContainerView subviews] count]; //-1 then +1 ++receiverRowIndex; msgV1.center = CGPointMake(msgV1.frame.size.width/2 + 5.0, 22.0+receiverRowIndex*44.0); } [toContainerView addSubview:msgV1]; } [temA release]; toContainerView.frame = CGRectMake(0.0, 0.0, 320, 44.0+receiverRowIndex*44.0); } if(flag == MSGV_ADD_CONTACT) { toContainerView.frame = CGRectMake(0.0, 0.0, 320, 44.0+receiverRowIndex*44.0); } [mainView reloadData]; }
相关推荐
在"可变分区的模拟.cpp"文件中,我们可以预见到以下关键部分的实现: - 定义内存分区的结构体,包含起始地址、大小和状态等字段。 - 实现链表或数组数据结构,用于存储和管理分区信息。 - 定义分配内存的函数,该...
在本实验中,我们设计了一个可变式分区分配的存储管理方案,并模拟实现了分区的分配和回收过程。该方案使用了最佳适应法来分配主存空间,使得每个作业都能获取合适的存储空间。 在该方案中,我们首先定义了一个可...
本文将深入探讨可变分区存储管理方式中的内存分配与回收机制,并提供一个基于C++语言的具体实现示例。通过分析给定的程序代码,我们将详细了解其工作原理以及实现细节。 #### 二、可变分区存储管理的基本概念 可变...
设计一个可变式分区分配的存储管理方案。并模拟实现分区的分配和回收过程。假设初始状态下,可用的内存空间为640KB,并有下列的请求序列: 作业1申请130KB 作业2申请60KB 作业3申请100KB 作业2释放60KB 作业4申请200...
1、在该实验中,采用可变分区方式完成对存储空间的管理(即存储空间的分配与回收工作)。 2、设计用来记录主存使用情况的数据结构:已分区表和空闲分区表或链表。 3、在设计好的数据结构上设计一个主存分配算法。 4...
本实验通过MATLAB实现四步相移法,旨在从四张特定的图片(以鱼为例)中获取物体的高度信息,即其轮廓信息。 首先,四步相移法的基本原理是基于干涉成像,它通过在光源和物体之间插入一个可调相位板,产生四个不同...
本实验报告主要涉及在操作系统中实现可变分区管理的模拟,包括分区的分配和回收,并使用了三种不同的分配算法:首次适应算法、循环首次适应算法和最佳适应算法。 首次适应算法是按顺序查找空闲分区,一旦找到能满足...
针对标题中提到的“可变目标C编译器”,我们可以了解到这个编译器具有针对不同目标系统进行编译的能力,这意味着它需要具备高度的灵活性和可配置性。 1. 词法分析(Lexical Analysis):编译过程的首步是词法分析,...
2. **空闲区链**:在可变式分区存储管理中,空闲区链是一种常见的数据结构,用于跟踪内存中的未被使用的区域。每个空闲区都有一个记录,包含起始地址、结束地址和大小,这些记录组成一个链表,方便快速查找和分配...
模拟实现动态可变分区存储管理系统,内存资源的分配情况用一个单链表来表示,每一个节点表示一个可变分区,记录有内存首地址、大小、使用情况等,模拟内存分配动态输入构造空闲区表,键盘接收内存申请尺寸大小,根据...
在本文中,我们学习了使用JS+CSS来实现DIV层自适应高度和宽度的技术。我们了解了CSS基础知识、JavaScript基础知识、获取浏览器窗口的高度、实现DIV层自适应高度、实现DIV层自适应宽度和监听窗口resize事件等知识点。...
C编译器 设计与实现 lcc pdf
本主题探讨的是如何利用基于阵列喷头的电纺直写技术来实现精度可变的磁栅尺制造,这是一种创新的制造方法,具有重要的理论研究价值和实际应用前景。 一、阵列喷头电纺直写技术 阵列喷头电纺直写技术是近年来发展...
labview编写的可以实现变声功能,并能将其保存下来的程序。用2016版本写的
本文献的书籍为《通信收发信机的Verilog实现与仿真》,由姜宇柏、黄志强等编著,由机械工业出版社出版于2006年10月,属于“可编程逻辑器件实用开发技术丛书”。 书中首先介绍了Verilog的基础知识,对初学者和中级...
在本项目中,我们采用MATLAB作为编程环境,利用机器学习算法来实现这一功能。MATLAB是一款强大的数学计算软件,它提供了丰富的工具箱,包括用于机器学习和图像处理的模块,使得开发这样的系统变得相对简单。 首先,...
标题 "C#访问OpcServer实现读写PLC" 描述了如何使用C#编程语言通过OPC(OLE for Process Control)服务器与PLC(可编程逻辑控制器)进行交互,实现数据的读取和写入功能。这个项目的核心是利用OPC技术来建立应用程序...
标题中的“PLC通讯实现-C#访问OPCUA实现读写PLC”指的是使用C#编程语言通过OPCUA协议来实现与可编程逻辑控制器(PLC)的通信,进行数据的读取和写入操作。OPCUA( OPC统一架构)是一种开放的标准,它允许不同设备和...
为了在Simulink环境中实现滑模控制的高度控制仿真,首先需要对飞行器的动态特性进行数学建模,这通常涉及到建立状态方程和输出方程。在确定系统的数学模型后,设计滑模控制器的关键步骤包括选择合适的滑动变量和设计...