iOS學習—表情的排列


MJ大神的表情排列,加上自己寫的增加表情功能斟览,不過還有點小bug(bug已經(jīng)解決)

//
//  ViewController.m
//  表情排列
//
//  Created by on 15/4/15.
//  Copyright (c) 2015年 apple. All rights reserved.
//
 
#import "ViewController.h"
 
#define kImageWidth 40
 
@interface ViewController ()
 
{
    UIButton *_addImage;
    NSInteger _imageCount;
    NSInteger _columns;
    NSInteger _col;
    NSInteger _row;
    CGFloat _oneX;
    CGFloat _oneY;
    CGFloat _margin;
}
 
@end
 
@implementation ViewController
 
- (void)viewDidLoad {
    [super viewDidLoad];
    _imageCount = 9;
    [self changePointOfImage:2];
}
 
- (void)addImage:(NSString *)imageName pointX:(NSInteger)x pointY:(NSInteger)y {
    UIImageView *faceView = [[UIImageView alloc] initWithFrame:CGRectMake(x, y, kImageWidth, kImageWidth)];
    faceView.image = [UIImage imageNamed:imageName];
    [self.view addSubview:faceView];
}
 
- (void)changePointOfImage:(NSInteger)currentColumns {
 
    _columns = currentColumns;
     
    _margin = (self.view.frame.size.width - currentColumns * kImageWidth) / (currentColumns + 1);
    _oneX = _margin;
    _oneY = 120;
     
    for (NSInteger i = 0; i <= _imageCount; i++) {
        _col = i % currentColumns;  // 列數(shù)
        _row = i / currentColumns;  // 行數(shù)
         
        CGFloat x = _oneX + _col * (kImageWidth + _margin);
        CGFloat y = _oneY + _row * (kImageWidth + _margin);
         
        if (self.view.subviews.count == 4 + _imageCount) {
            UIView *temp = self.view.subviews[i + 3];
            CGRect frame = temp.frame;
            frame.origin = CGPointMake(x, y);
            temp.frame = frame;
        } else if (i == _imageCount) {
            _addImage = [UIButton buttonWithType:UIButtonTypeContactAdd];
            [_addImage addTarget:self action:@selector(addFaceImage) forControlEvents:UIControlEventTouchUpInside];
            _addImage.frame = CGRectMake(x, y, kImageWidth, kImageWidth);
            [self.view addSubview:_addImage];
        } else {
            NSInteger imageIndex = i % 9;
            NSString *imageName = [NSString stringWithFormat:@"01%ld.png", imageIndex];
            [self addImage:imageName pointX:x pointY:y];
        }
    }
}
 
- (void)addFaceImage {
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.35];
     
    _imageCount++;
    NSInteger newIndex = _imageCount % 9;
    NSString *imageName = [NSString stringWithFormat:@"01%ld.png", newIndex];
     
    CGFloat x = _addImage.frame.origin.x;
    CGFloat y = _addImage.frame.origin.y;
     
    [self addImage:imageName pointX:x pointY:y];
     
    _col = _imageCount % _columns; 
    _row = _imageCount / _columns;
     
    CGRect frame = _addImage.frame;
    frame.origin.x = _oneX + _col * (kImageWidth + _margin);
    frame.origin.y = _oneY + _row * (kImageWidth + _margin);
    _addImage.frame = frame;
     
    [UIView commitAnimations];
}
 
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}
 
- (IBAction)segmentedChoose:(UISegmentedControl *)sender {
     
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.35];
     
    NSInteger selectCol = sender.selectedSegmentIndex + 2;
    [self changePointOfImage:selectCol];
     
    [UIView commitAnimations];
}
@end

bug說明:

當添加過表情后再排序已烤,就會發(fā)現(xiàn),添加按鈕跑到前面去了胯究。如圖:

運行截圖-1

原因:因為subviews是一個NSArray,添加的表情就會自動的添加到subviews的后面,也就是添加按鈕不位于最上層涨颜,即subviews的NSArray的末尾。那么循環(huán)排序的時候星持,添加按鈕就一直在第十個的位置弹灭。

解決方法:將添加表情按鈕置于最頂層即可。

在addFaceImage方法中添加

[self.view bringSubviewToFront:_addImage];

修改后的代碼如下:

- (void)addFaceImage {
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.35];
     
    _imageCount++;
    NSInteger newIndex = _imageCount % 9;
    NSString *imageName = [NSString stringWithFormat:@"01%ld.png", newIndex];
     
    CGFloat x = _addImage.frame.origin.x;
    CGFloat y = _addImage.frame.origin.y;
     
    [self addImage:imageName pointX:x pointY:y];
     
    _col = _imageCount % _columns; 
    _row = _imageCount / _columns;
     
    CGRect frame = _addImage.frame;
    frame.origin.x = _oneX + _col * (kImageWidth + _margin);
    frame.origin.y = _oneY + _row * (kImageWidth + _margin);
    _addImage.frame = frame;
     
    [self.view bringSubviewToFront:_addImage];
     
    [UIView commitAnimations];
}

效果如下:

運行截圖-2
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逻翁,一起剝皮案震驚了整個濱河市捡鱼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌驾诈,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件管引,死亡現(xiàn)場離奇詭異闯两,居然都是意外死亡,警方通過查閱死者的電腦和手機生蚁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評論 3 395
  • 文/潘曉璐 我一進店門邦投,熙熙樓的掌柜王于貴愁眉苦臉地迎上來伤锚,“玉大人,你說我怎么就攤上這事猛们∧螅” “怎么了弯淘?”我有些...
    開封第一講書人閱讀 164,491評論 0 354
  • 文/不壞的土叔 我叫張陵庐橙,是天一觀的道長借嗽。 經(jīng)常有香客問我态鳖,道長恶导,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,636評論 1 293
  • 正文 為了忘掉前任邦泄,我火速辦了婚禮裂垦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘缸废。我一直安慰自己,他們只是感情好企量,可當我...
    茶點故事閱讀 67,676評論 6 392
  • 文/花漫 我一把揭開白布届巩。 她就那樣靜靜地躺著硅瞧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪腕唧。 梳的紋絲不亂的頭發(fā)上瘾英,一...
    開封第一講書人閱讀 51,541評論 1 305
  • 那天,我揣著相機與錄音缺谴,去河邊找鬼。 笑死,一個胖子當著我的面吹牛县爬,可吹牛的內(nèi)容都是我干的添谊。 我是一名探鬼主播,決...
    沈念sama閱讀 40,292評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼斩狱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了祝高?” 一聲冷哼從身側(cè)響起污筷,我...
    開封第一講書人閱讀 39,211評論 0 276
  • 序言:老撾萬榮一對情侶失蹤乍赫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后雷厂,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,655評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡诈皿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,846評論 3 336
  • 正文 我和宋清朗相戀三年像棘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缕题。...
    茶點故事閱讀 39,965評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瘪松,靈堂內(nèi)的尸體忽然破棺而出锨阿,到底是詐尸還是另有隱情宵睦,我是刑警寧澤墅诡,帶...
    沈念sama閱讀 35,684評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站诬辈,受9級特大地震影響酵使,放射性物質(zhì)發(fā)生泄漏焙糟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,295評論 3 329
  • 文/蒙蒙 一缺脉、第九天 我趴在偏房一處隱蔽的房頂上張望悦穿。 院中可真熱鬧攻礼,春花似錦栗柒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,894評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽僚焦。三九已至曙痘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間边坤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,012評論 1 269
  • 我被黑心中介騙來泰國打工罢洲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留文黎,地道東北人惹苗。 一個月前我還...
    沈念sama閱讀 48,126評論 3 370
  • 正文 我出身青樓耸峭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親院究。 傳聞我的和親對象是個殘疾皇子洽瞬,可洞房花燭夜當晚...
    茶點故事閱讀 44,914評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫伙窃、插件样漆、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,103評論 4 62
  • 時間過得好快,感覺剛做了班級周檢視放祟,又開始小組周檢視,總要開會的樣子跪妥。 可是,時間對誰都是一樣的眉撵,如何利用時間,就...
    扎高拉姆閱讀 150評論 0 0
  • 今天就是除夕,回家也有兩天了膘壶,一直都有點身不由己,瑣事纏身颓芭。直到拿起書和筆,直到母親說起以往亡问,才擺脫俗世,才有家的...
    野鳥閱讀 438評論 0 0
  • 1. 安排充電時刻 算一算進小灶群現(xiàn)在也有五個月了州藕,從進來后就開始讀書寫作酝陈。如果以平均每天花一小時閱讀一小時寫作,...
    Janet大昕鼓徵閱讀 197評論 0 6
  • ?1.“我們散了吧……” 當鑫雨說出這句話的時候缨该,心情是釋然的。相識超過5年压彭,戀愛不滿一年。很奇怪壮不,本應(yīng)甜美的戀愛...
    劉二丫兒閱讀 284評論 0 0