例如微博中的表情选择排布

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了例如微博中的表情选择排布相关的知识,希望对你有一定的参考价值。

这里获取到所用数据之后,然后再算每一页因该有多少个emojin,然后把每一页有多少个的,然后赋值到数组中,然后进行排版

#pragma mark - Datas
- (void)setExpressionDatas:(NSArray *)expressionDatas
{
    _expressionDatas = expressionDatas;// 修改
    
    // 删除之前的控件, 避免重复创建
    [self.expressionScrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)];

    // 设置页数
    NSInteger pageCount = (expressionDatas.count + kEachPageEmotions - 1) / kEachPageEmotions;
    //    self.emotionsPageControl.numberOfPages = pageCount > 1 ? pageCount : 0;
    self.expressionPageControl.numberOfPages = pageCount;
    
    // 创建单页表情容器层
    for (int i = 0; i < pageCount; i ++)
    {
        YSWeiBoExpressionEmojiView *emotionsPageView = [[YSWeiBoExpressionEmojiView alloc] init];
        
        // 计算单页的表情范围
        NSRange range;
        
        //#define kEmotionPageViewMaxCols 7   // 最大列数
        //#define kEmotionPageViewMaxRows 3   // 最大行数
        //#define kEachPageEmotions (kEmotionPageViewMaxCols * kEmotionPageViewMaxRows - 1)        // 边距
        
        range.location = i * kEachPageEmotions;// 20
        // 每次分配后剩余的表情
        NSInteger residueEmotions = expressionDatas.count - range.location;// 减去第一页所剩的个数
        // 单页表情是否填满
        if (residueEmotions >= kEachPageEmotions)
        {
            range.length = kEachPageEmotions;
        }
        else
        {
            range.length = residueEmotions;
        }
        
        // 设置单页表情数
        emotionsPageView.expressionEmojidatas = [expressionDatas subarrayWithRange:range];
        
        [self.expressionScrollView addSubview:emotionsPageView];
    }
    
    // 重新设置子控件 -> 最近表情挤一块
    [self setNeedsLayout];
}

 

获取到使用Frame排布

- (void)layoutSubviews
{
    [super layoutSubviews];

    NSInteger emotionsCount = self.expressionEmojidatas.count;
    
    CGFloat emotionButtonW = (self.frame.size.width - 2 *kEmotionPageViewMargin) / kEmotionPageViewMaxCols;
    CGFloat emotionButtonH = (self.frame.size.height - kEmotionPageViewMargin) / kEmotionPageViewMaxRows;
    for (int i = 0; i < emotionsCount; i++)
    {
        YSWeiBoEmotionButton *emotionButton = self.subviews[i];
        emotionButton.backgroundColor = MJRandomColor;
        
        emotionButton.frame = CGRectMake
        (kEmotionPageViewMargin + (i % kEmotionPageViewMaxCols) * emotionButtonW,
         kEmotionPageViewMargin + (i / kEmotionPageViewMaxCols) * emotionButtonH,
                                         emotionButtonW,
                                         emotionButtonH);
    }
}

以上是关于例如微博中的表情选择排布的主要内容,如果未能解决你的问题,请参考以下文章

新浪微博客户端(30)-制作微博中的九宫格相册图片

转载Redis在新浪微博中的应用

新浪微博中遇到的网络问题

例如微博表情添加到textView中

微博中出现http/1.1 400 Bad Request怎么解决。

新浪微博客户端(56)-拼接微博内容中的昵称,超链接,表情图片