高仿花田小憩OC版

作者: xiao公子 | 来源:发表于2016-07-20 20:32 被阅读724次

前段时候在简书看博客时,看到Monkey_ALin 分享的高仿花田小憩(Swift版),项目整体不是太复杂,并且展示效果确实挺不错的,就萌发了工作之余用OC仿写的念头。ps:主要是偷懒,不用再找UI,不用再找接口了,在这要非常感谢Monkey_ALin,节省了很多时间!

github下载地址swift版OC版

展示效果

专题部分1 专题部分2 商城部分1 商城部分2 我的部分
项目整体的实现逻辑与思路与Swift版的差不多,大家可以参照文章。另外完善了一些Swift版的部分问题。

完善部分

1.点击导航栏左侧按钮出现下拉蒙版视图

点击导航栏左侧按钮出现下拉蒙版视图
Swift版的,蒙版的Top约束是与当前 tableView的偏移量为参考点,当 tableView滑动时偏移量一直在改变,蒙版frame也会随之改变,出现这种情况。所以解决这种情况,蒙版约束的参考物一定是固定的,刚开始我用navigationBar的底部为参照物,看似解决了这个问题,但是当点击蒙版上的cell,进入下一个控制器的时候,navigationBar的位置竟然会发生改变,正常情况下,navigationBar(44)上面有状态栏(20),当跳转的时候状态栏会消失,这就造成了,跳转后返回时,蒙版会上移20(状态栏高度)。为了解决这个问题想了很久,一直在钻牛角尖,想着怎么在顶部找到或者添加一个固定的控件当做蒙版参照物, 但是在TableViewController上找到固定控件太麻烦了,最后用了最直接的方法,为控制器换个爹(代码也拼爹。。)!把父类TableViewController换成 ViewController,以ViewControllerView的top为参考点。
总结:当遇到界面复杂的TableView时候,最好使用ViewController,方便扩展。
//设置blurView的约束
        [self.blurView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.left.equalTo(self.tableView);

            make.top.equalTo(self.view.mas_top);

            make.size.mas_equalTo(CGSizeMake(MY_WIHTE, MY_HEIGHT-49-64));
        }];

2.详情页webview的高度

详情页webview的高度

详情页用H5页面展示的,cell里面嵌套一个webview,然后根据webview的高度来确定cell 的高度。Swift版在webViewDidFinishLoad中使用webView.scrollView.contentSize.height取出高度,而我使用[[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"] intValue];来拿到内容高度,通过打印用两种方法拿到的高度,可以看出直接使用webView.scrollView.contentSize.heigh第一次拿到的高度在网络不好时,有时候不准确,会造成cell内容展示不全。

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    //加载本地的JS文件
    NSString *jsStr = [NSString stringWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"image" withExtension:@"js"] encoding:NSUTF8StringEncoding error:nil];
    [webView stringByEvaluatingJavaScriptFromString:jsStr];
    //为每个图片添加点击事件
    [webView stringByEvaluatingJavaScriptFromString:@"setImageClick()"];

     NSInteger height = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight;"] intValue];
    //避免浪费性能,所以计算一次高度即可
    if (!self.isFinishLoad && webView.scrollView.contentSize.height > 0) {
        self.isFinishLoad = YES ;
        self.cellHeigth = height;
//#warning 使用这个方法算出的高度不准
//        self.cellHeigth = webView.scrollView.contentSize.height;
    }
}

3.商城模块的容错处理

商城模块的容错处理 轮播图无数据时显示

在商城模块中,第一个自定义cell是一个轮播图,后台轮播数据非常不稳定,有时候请求结果为空,原版做了容错处理,在请求数据为空的时候,不显示第一个轮播cell.OC版完善了容错处理。

4.完善了订单页 增加添加发票地址

订单页 订单页

后记:

用OC仿写后,与swift相对比。swift这门语言及其精简优雅,代码量以及文件量只有OC的一半左右。所以,兄弟们,闲暇之余不要忘了swift,swift才是以后的主流.另外项目中有一个bug,没有解决,有兴趣的可以下载项目后,找到带有警告的那个标注(唯一的警告处),解决后私信交流交流,感觉项目对自己技术有帮助的,欢迎start,鼓励一下。**github:OC版 swift版 **

相关文章

  • 高仿花田小憩OC版

    前段时候在简书看博客时,看到Monkey_ALin 分享的高仿花田小憩(Swift版),项目整体不是太复杂,并且展...

  • iOS高仿:花田小憩3.0.1

    前言 断断续续的已经学习Swift一年多了, 从1.2到现在的2.2, 一直在语法之间徘徊, 学一段时间, 工作一...

  • 2019-09-20

    收录可以用到的东西iOS新闻应用源码,高仿今日头条源码等iOS13 暗黑模式(Dark Mode)适配之OC版高仿...

  • [开源App推荐] Floral – iOS高仿: 花田小憩

    花田小憩:是一个植物美学生活平台, 以自然生活为主导, 提倡植物学生活方法, 倡导美学标准的生活态度的一个APP....

  • iOS-OC和Swift单利创建

    OC单利 Swift单利 推荐使用 仿OC版 单利优缺点 优点: 缺点:

  • 花田小憩

    又是一个下午,懒洋洋的睁开惺忪的睡眼,打开布满爬山虎的窗户,午后的第一缕斜阳撒下。这令人昏沉的时刻你又在想...

  • 花田小憩

    有人问我你想要什么? 我想我该要肆意妄为, 要志得意满, 要遨游山川和湖海 要世界所有烂漫和爱 开个玩笑,我长大了...

  • iOS高仿斗鱼项目(OC版)

    简 1 iOS高精仿�斗鱼(OC) 开发环境:Xcode 7.3.1,语言:Objective-C 用到的工具:C...

  • 高仿书旗小说 Flutter版,支持iOS、Android

    高仿书旗小说 Flutter版,支持iOS/Android 高仿书旗小说 Flutter 版 Github地址ht...

  • 高仿喜马拉雅项目 - Swift5版本

    高仿喜马拉雅项目 - Swift5版本 高仿喜马拉雅项目 - Swift5版本

网友评论

  • 夜生物:大神,Swift那个找到解决错误的方法了吗?我一看到错误就头疼:sweat:
    xiao公子:@ChineseTiger 建议在github重新下载一份代码试试
    夜生物:@xiao公子 在ImageCache.swift 里面 报Expected ',' separator, Expected expression in list of expressions, Missing argument for parameter 'selector' in call ,这三个
    xiao公子:什么错误?

本文标题:高仿花田小憩OC版

本文链接:https://www.haomeiwen.com/subject/wlovjttx.html