IOS 学习记录
表情排列
//
// MJViewController.m
// 01-表情排列
//
// Created by apple on 13-11-24.
// Copyright (c) 2013年 itcast. All rights reserved.
// #import "MJViewController.h" /*
1.adjust....方法去掉第2个参数----add:(BOOL)add (不能增加全局变量或者成员变量)
2.在表情最后面增加一个“+”按钮,添加按钮在尾部添加一个表情(表情图片随机)
*/ #define kImgWH 50
#define kInitCount 13 @interface MJViewController () @end @implementation MJViewController #pragma mark 控制器的view加载完毕就调用一次
- (void)viewDidLoad { [super viewDidLoad]; [self adjustImagePosWithColumns:2 add:YES];
} #pragma mark 调整图片的位置
- (void)adjustImagePosWithColumns:(int)columns add:(BOOL)add { // 1.定义列数、间距
// 每行3列
//#warning 不一样
// int columns = 3;
// 每个表情之间的间距 = (控制器view的宽度 - 列数 * 表情的宽度) / (列数 + 1)
CGFloat margin = (self.view.frame.size.width - columns * kImgWH) / (columns + 1); // 2.定义第一个表情的位置
// 第一个表情的Y值
CGFloat oneY = 100;
// 第一个表情的x值
CGFloat oneX = margin; // 3.创建所有的表情
for (int i = 0; i < kInitCount; i++) { // i这个位置对应的列数
int col = i % columns;
// i这个位置对应的行数
int row = i / columns; // 列数(col)决定了x
CGFloat x = oneX + col * (kImgWH + margin);
// 行数(row)决定了y
CGFloat y = oneY + row * (kImgWH + margin); //#warning 不一样
if (add) { // 添加新的imageView
int no = i % 9; // no == [0, 8]
NSString *imgName = [NSString stringWithFormat:@"01%d.png", no];
[self addImg:imgName x:x y:y];
} else { // 取出旧的imageview 设置x、y
// 取出i + 1位置对应的imageView,设置x、y值
// + 1是为了跳过最前面的UISegmentControl
UIView *child = self.view.subviews[i + 1];
// 取出frame
CGRect tempF = child.frame;
// 修改x、y
tempF.origin = CGPointMake(x, y);
// 重新赋值
child.frame = tempF;
}
}
} #pragma mark 添加表情 icon:表情图片名
- (void)addImg:(NSString *)icon x:(CGFloat)x y:(CGFloat)y { UIImageView *one = [[UIImageView alloc] init];
one.image = [UIImage imageNamed:icon];
one.frame = CGRectMake(x, y, kImgWH, kImgWH);
[self.view addSubview:one];
} #pragma mark 更改表情的列数
- (IBAction)indexChange:(UISegmentedControl *)sender { [UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5]; int columns = sender.selectedSegmentIndex + 2;
[self adjustImagePosWithColumns:columns add:NO]; [UIView commitAnimations];
} @end
IOS 学习记录的更多相关文章
- 【原】iOS学习之事件处理的原理
在iOS学习23之事件处理中,小编详细的介绍了事件处理,在这里小编叙述一下它的相关原理 1.UITouch对象 在触摸事件的处理方法中都会有一个存放着UITouch对象的集合,这个参数有什么用呢? ( ...
- 【原】iOS学习47之第三方-FMDB
将 CocoaPods 安装后,按照 CocoaPods 的使用说明就可以将 FMDB 第三方集成到工程中,具体请看博客iOS学习46之第三方CocoaPods的安装和使用(通用方法) 1. FMDB ...
- 黑苹果-IOS学习的开始
深知安装黑苹果的不易,在这里写一下关于我的Thinkpad E430c安装黑苹果教程(Mac版本:Yosemite 10.10.4),希望能够帮助有需要的朋友. 首先贴上我的电脑配置报表: ----- ...
- 【原】iOS学习之SQLite和CoreData数据库的比较
1. SQLite数据库 sqlite数据库操作的基本流程是, 创建数据库, 再通过定义一些字段来定义表格结构, 可以利用sql语句向表格中插入记录, 删除记录, 修改记录, 表格之间也可以建立联系. ...
- 【转】BLE 学习记录
原文网址:http://m.blog.csdn.net/blog/chiooo/43985401 BLE 学习记录 ANROID BLE 开发,基于 bluetoothlegatt 分析 mBluet ...
- 【转】 iOS学习之sqlite的创建数据库,表,插入查看数据
原文: http://blog.csdn.net/totogo2010/article/details/7702207 iOS sqlite数据库操作.步骤是: 先加入sqlite开发库libsql ...
- IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)
IOS学习:ios中的数据持久化初级(文件.xml.json.sqlite.CoreData) 分类: ios开发学习2013-05-30 10:03 2316人阅读 评论(2) 收藏 举报 iOSX ...
- ios学习资料(一)
IT社区: http://www.cnblogs.com/ http://www.csdn.net/ http://www.51cto.com/ http://www.cocoachina.com/ ...
- IOS学习【前言】
2016-1-14 16年开始时导师安排任务,开始IOS学习之旅 经过几天的学习,感觉还是需要作比较多的学习笔记,因此开始用博客记录整个过程,方便以后查看学习与分享. 主要记录一些关键的问题处理方法 ...
随机推荐
- Eclipse + Apache Axis2 发布RESTful WebService(三)第一个程序Hello Axis2 !(未成功)
此路不通 Axis2发布SOAP WebService非常简单,建一个Dynamic Web Project,然后为它建一个Axis的Web Service(Tomcat7+JDK),就会生成Clas ...
- 学习 WebService 第二步:知识准备——WSDL文件解析
原文地址:https://www.cnblogs.com/yzw23333/p/7245104.html Web service中一个 WSDL 对应一个 web service地址. 可以想象成一个 ...
- 在vue路由当中使用keep-alive避免多次加载组件,减少消耗
今天在vue当中使用了full-page这个组件.但是发现在每次路由跳转完之后,再回到使用fullpage的这个页面,fullpage会报错,fullpage只能初始化一次. 这个时候给路由使用kee ...
- luogu 1355 神秘大三角 判断点和三角形的位置关系 面积法 叉积法
题目链接 题目描述 判断一个点与已知三角形的位置关系. 输入输出格式 输入格式: 前三行:每行一个坐标,表示该三角形的三个顶点 第四行:一个点的坐标,试判断该点与前三个点围成三角形的位置关系 (详见样 ...
- 彻底删除node_modules文件
npm install rimraf -g rimraf node_modules
- Codeforces635C XOR Equation【数学】
题目链接: http://codeforces.com/contest/635/problem/C 题意: 给定两个数的和s及异或x,求两个数的可能情况. 分析: 我们有公式a+b=a& b∗ ...
- POJ 3660 Cow Contest 传递闭包+Floyd
原题链接:http://poj.org/problem?id=3660 Cow Contest Time Limit: 1000MS Memory Limit: 65536K Total Subm ...
- codeforces 997E(线段树)
分析: 首先考虑如何计算整个数组有多少个good区间 容易发现一个区间是good区间当且仅当max-min-len=-1,且任意区间max-min-len>=-1 我们可以枚举右端点,然后维护前 ...
- Mybatis逆向生成使用扩展类
1.背景介绍 用的mybatis自动生成的插件,然而每次更改数据库的时候重新生成需要替换原有的mapper.xml文件,都要把之前业务相关的sql重新写一遍,感觉十分麻烦,就想着把自动生成的作为一个基 ...
- java基础第三篇
6.Java 中的容器(重点) a.变量:变量是一个容器,它存储的单个值 //int i=3; 1.局部变量:定义在方法中,没有默认值 2.成员变量:定义在类中方法外,这个事物的属性(特征)定义为成员 ...