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

  

时间: 2024-07-30 14:41:47

IOS 学习记录的相关文章

ios学习记录 day41 UI17 多线程

CPU(工厂) 进程(车间) 线程(工人) 一个进程代表一个应用程序 CPU总是运行一个进程,其它进程处于非运行状态.一个进程可以包含多个线程.线程与线程之间可以共享进程的内存区域. 打开一个应用程序,系统会给我们创建一个线程,称为主线程 管理主界面的UI与内部循环机制(与界面相关的东西必须放在主线程中!!!) 压力比较大且会造成线程阻塞(界面卡),因此我们通过创建子线程来对主线程进行分压. 什么时候用多线程 1.网络请求(同步的) 2.文件读写(少) 3.大数据计算(冒泡) 4.数据库sele

ios学习记录 day42 UI18 集合视图

集合视图UICollectionView 简单来说就是多列的TableView 它们同样是datasource和delegate设计模式UICollectionViewLayout是一个对View布局和行为描述的类  UICollectionViewFlowLayout是它的子类 ios学习记录 day42 UI18 集合视图,码迷,mamicode.com

iOS学习记录之-AvAudioPlayer

前言:这两天老师布置了一个作业,编写一个音乐播放器的程序,使用AvAudioPlayer类. AvAudioPlayer类是编写iOS播放器的三个类之一,其他两个以后用到再阐述.今天的主角是AvAudioPlayer.下面我们来一起看看这个类 首先介绍一下,AvAudioPlayer它是苹果公司封装好的一个类,用起来很方便,功能也很强大,但是它只支持播放沙盒存好的音乐,不支持在线播放,是苹果公司自家ipod 播放器专用的.这点大家知道即可不必深究: 好,言归正传: 1,创建AvAudioPlay

ios学习记录 day44 UI20 Storyboard 高级可视化编程 + 单例

可视化编程 : 5.0之前 xib  5.0之后 Storyboard 注意事项:1.在AppDelegate中不用代码初始化一个window   2.在general  设置 Main Interface(创建的时候自动设置的) weak可以指向 但是没有拥有权   strong有拥有权 单例特性: 1.唯一性  创建的对象永远指向同一块内存地址     2.不释放   从打开程序到后台关闭 对象都不释放 单例安全:加锁@synchronized  防止同一块内存被创建两次,破坏唯一性 //单

【ios学习记录】-如何定制UITableView的圆角单元格

自从ios7更新以来,UITableView控件的边角style由默认圆角变成了直角,更加适应UI扁平化设计的效果了.但对于某种情况来说,如果tableview宽度不是拉伸到与父视图等宽,那么使用直角的tableview则会显得不好看.如下图分组列表(group tableview)所示. 而如果此时采用圆角效果的话,则会显示圆润温和,用户会觉得好看,体验很好.如下图所示. 要实现以上分组列表(group tableview)的圆角效果,主要是通过Core Graphics API来实现图层重绘

【ios学习记录】- UITextField输入浮点数的限制

通常在编辑框中输入一些货品数量,金额时,我们都会做一些输入的判断限制.例如不能输入非法字符,只能输入数字等等.现把最近遇到的一些输入限制需求展现如下: 1. 输入小数位不能超过两位: 2. 不能重复输入小数点: 3. 不能输入除数字以外的字符(但不包括退格键,负号键): 4. 限制长度为最小为1,最大为11. 为了实现以上需求,主要是依靠以下UITextFieldDelegate的一个协议方法来实现的: - (BOOL)textField:(UITextField *)textField sho

学习ios笔记第一天的C语言学习记录

c语言基础学习 int num1 = 15; int num2 = 5; int temp = 0; //先把num1放到temp里 temp = num1; //先把num2放到num1里 num1 = num2; //先把temp放到num2里 num2 = temp; 算数运算符 +加法运算 -减法运算符 *乘法运算符 /除法运算符  ------整型相除取整,除数不为0 %取余运算符 ------两边均为整数 ++递增运算-------运算符在前,先执行:运算符在后,后执行: --递减运

iOS学习笔记之UITableViewController&amp;UITableView

iOS学习笔记之UITableViewController&UITableView 写在前面 上个月末到现在一直都在忙实验室的事情,与导师讨论之后,发现目前在实验室完成的工作还不足以写成毕业论文,因此需要继续思考新的算法.这是一件挺痛苦的事情,特别是在很难找到与自己研究方向相关的文献的时候.也许网格序列水印这个课题本身的研究意义就是有待考证的.尽管如此,还是要努力的思考下去.由于实验室的原因,iOS的学习进度明显受到影响,加之整理文档本身是一件耗费时间和精力的事情,因此才这么久没有写笔记了. M

IOS学习笔记 -- Modal和Quartz2D

一. Modal1.Modal的默认效果:新控制器从屏幕的最底部往上钻,直到盖住之前的控制器为止;Modal只是改变了View的现实,没有改变rootViewController 2.常用方法1>.以Modal的形式展示控制器- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion2>.关