Coder Social home page Coder Social logo

codermikehe / wechat Goto Github PK

View Code? Open in Web Editor NEW
1.2K 24.0 252.0 28.63 MB

🔥 iOS 利用MVVM + RAC + ViewModel-Based Navigation来搭建微信(WeChat 7.0.0+)的整体基本架构,以及实现微信朋友圈、通讯录、下拉小程序、搜索等主要功能,代码规范惊为天人、注释详解令人发指、细节处理精益求精、核心功能配备文档、接近98%还原度的原生App视觉体验,代码不多,注释多。(持续更新,敬请期待,欢迎Star和Fork…)

Home Page: https://github.com/CoderMikeHe/WeChat

License: MIT License

Ruby 0.40% Objective-C 99.31% C 0.29%
mvvm mvvm-architecture mvvm-framework wechat reactivecocoa reactivecocoa-mvvm mvvm-rac-viewmodel ios-mvvm moments contacts

wechat's Introduction

Hi there 👋

  • 😄 你好~,我是 @CoderMikeHe,工作在深圳,一个略懂Objective-CSwiftVueFlutter的编程萌新。
  • 🌱 目前业余时间在学习SwiftVueFlutter等技术,学以致用的来精仿 微信 App,通过项目的实践,来打磨自己的技术。
  • 🔭 坚持业余时间分享一些工作中遇到的技术难题和实际解决方案,编写技术方案解决之道,希望能够传道、授业、解惑。
  • 📫 技术上有疑惑?理解上有问题?实现上有新方案?还请联系我,我非常乐意帮助!欢迎大神们多多指点🙏
  • ♥️ 代码如人,见字如面,开源不易,感谢Star

wechat's People

Contributors

codermikehe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

wechat's Issues

在按照demo导入后,使用不了viewModel中的services

自己新建了一个测试工程,把类都导入进来后报错,使用services中的方法self.viewModel.services dismissViewModelAnimated:YES 报错:method for selector 'popViewModelAnimated:',很奇怪会出现这个问题,services中的client也使用不了,但是下载下来的Wechat demo是没有问题的,想知道是什么问题

header view高度方法走两次的问题楼主解决了吗?

/// 设置高度
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    MHMomentItemViewModel *itemViewModel = self.viewModel.dataSource[section];
    /// 这里每次刷新都会走两次!!! Why???
    return itemViewModel.height;
}

heightForHeaderInSection 执行两次的问题

推测是 estimatedSectionHeaderHeight 有关
设置为 0 之后, 一个调用是负责重绘, 一个调用是负责 reload 之后 content offset 保持不变, 所以会调用两次

如果不设置 estimatedSectionHeaderHeight 为 0 , 则只会 reload 时 调用一次,content offset 则是 系统对 header 高度动态预估, 会导致 tableview 的 contetnoffset 异常

以上理论是我推测的
复现方法 , 修改 estimatedSectionHeaderHeight 的值, 滚动几次 点击全文, 再滚动

昨天反馈你的图片不显示的问题我找到了 是iOS14以后的系统

原因YYAnimatedImageView不显示图片
在YYAnimatedImageView类里加入

  • (void)load {
    // 获取系统的对象方法
    Method displayLayerMethod = class_getInstanceMethod(self, @selector(displayLayer:));

    // 获取自己定义的对象方法
    Method displayLayerNewMethod = class_getInstanceMethod(self, @selector(displayLayerNew:));

    // 方法交换
    method_exchangeImplementations(displayLayerMethod, displayLayerNewMethod);
    }

  • (void)displayLayerNew:(CALayer *)layer {

    Ivar imgIvar = class_getInstanceVariable([self class], "_curFrame");
    UIImage *img = object_getIvar(self, imgIvar);
    if (img) {
    layer.contents = (__bridge id)img.CGImage;
    } else {
    if (@available(iOS 14.0, *)) {
    [super displayLayer:layer];
    }
    }

缺失文件

为什么我clone下来的项目中 没有Pods文件夹

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.