iOS模仿微博写的一个Demo,供大家参考

本文主要讲解模仿微博的地方吧,至于其他的功能(定位,环信,极光推送,3D Touch 和 指纹解锁),有时间再另起一篇博客讲解。

这是项目的开源地址:JTBlogDemo

首先我们需要自定义TabBar,在正中间加上一个‘加号’的按钮。我们需要创建一个类JTTabBar,继承自UITabBar,把这个按钮添加上去。话不多说,上代码:

- (instancetype) initWithFrame:(CGRect)frame {
    
    if (self = [super initWithFrame:frame]) {
        
        [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor grayColor], NSForegroundColorAttributeName, [UIFont fontWithName:@"Helvetica" size:12.0f],NSFontAttributeName,nil] forState:UIControlStateNormal];
        [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:AppTintColor, NSForegroundColorAttributeName, [UIFont fontWithName:@"Helvetica" size:12.0f],NSFontAttributeName,nil] forState:UIControlStateSelected];
        self.tintColor = AppTintColor;
        
        UIButton *blogBtn = [[UIButton alloc] init];
        [blogBtn setBackgroundImage:[UIImage imageNamed:@"tabbar_compose_button"] forState:UIControlStateNormal];
        [blogBtn setBackgroundImage:[UIImage imageNamed:@"tabbar_compose_button_highlighted"] forState:UIControlStateHighlighted];
        [blogBtn setImage:[UIImage imageNamed:@"tabbar_compose_icon_add"] forState:UIControlStateNormal];
        [blogBtn setImage:[UIImage imageNamed:@"tabbar_compose_icon_add_highlighted"] forState:UIControlStateHighlighted];
        
        blogBtn.size = [UIImage imageNamed:@"tabbar_compose_button"].size;
        [blogBtn addTarget:self action:@selector(sendBlog:) forControlEvents:UIControlEventTouchUpInside];
        [self addSubview:blogBtn];
        self.blogBtn = blogBtn;
    }
    
    return self;
}

效果如图:

iOS模仿微博写的一个Demo,供大家参考_第1张图片
1.png

同时为JTTabBar加一个代理,用于响应点击:

@protocol JTTabBarDelegate 
@optional
- (void)selectSendBlogBtn:(JTTabBar *)tabBar;
@end

- (void)sendBlog:(UIButton *)sender {
    if (self.delegate && [self.delegate respondsToSelector:@selector(selectSendBlogBtn:)]) {
        [self.delegate selectSendBlogBtn:self];
    }
}

在JTTabBarController中使用KVC直接将UITabBar替换成我们自定义的TabBar,具体看Demo。我们点击发微博按钮时,当我们点击‘加号’按钮时,直接present发微博的页面JTBlogViewController,同时调用方法 - (void)appearAnimation,播放类似微博的弹簧动画 。点击其中一个按钮或者旁边的时候dismiss发微博的页面JTBlogViewController,同时调用方法 - (void)disAppearAnimation,播放消失动画。


iOS模仿微博写的一个Demo,供大家参考_第2张图片
2.png

进入编辑页面时,初始化JTBlogEditView,创建编辑页面,包括下面的定位,公开程度,以及对应的照片,拍照,视频和表情的按钮。具体选择照片,视频和拍照等(图片是在模拟器的50%scale下截的图,不是很清晰)


iOS模仿微博写的一个Demo,供大家参考_第3张图片
4.png

最后涉及到一些照片选择,拍照,视频等,我里面限定的是最多选取9张图片,当然你可以根据自己的需求来设定。为了避免第二次进入ImagePickerViewController中选择照片,会重复的问题,每次选完照片是就会将已经选择的照片全部删除(不包括拍的照片),然后保存到缓存中,确保不会出现重复的照片。当我们发布时会将缓存清空。另外,若用户点击取消有一个保存草稿的选项,用户可以保存编辑的文字,下次进入时会自动出现在编辑框。

好啦,第一次在写博客,就这么多吧!还有很多细节没有讲,大家参考Demo吧_

你可能感兴趣的:(iOS模仿微博写的一个Demo,供大家参考)