weex 在ios怎么调用.we文件
项目初始化1、没有现成的工程的话新建ios项目命令行cd到项目根目录 执行 pod init,会创建一个pod配置文件用编辑器打开,加上 pod 'WeexSDK', :path='./sdk/'
鱼峰ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!
/weex在ios目录下有个sdk文件夹,把它复制到ios项目根目录,和podFile里配置的路径一致关掉xcode,在当前目录,命令行执行pod install,现在项目目录变成了这样,以后点击xcworkspace文件打开项目创建一个新目录weex,命令行cd到weex目录,执行weex init,会提示你输入项目名称自动创建的文件:
在当前目录命令行执行npm install,安装依赖库创建一个文件夹js,命令行执行weex src -o js生成最终需要的js文件也可以weex src/main.we在浏览器预览或者weex src/main.we --qr 生成二维码,用playground App 扫描预览加载weex页面xcode打开workspace项目文件打开AppDelegate.m添加一下内容将之前创建的js文件夹拖到xcode工程的文件列表效果是这样的weex视图控制器的初始化ViewController.h:
[objc] view plain copy在CODE上查看代码片派生到我的代码片//// ViewController.h// weexDemo3//// Created by admin on 16/8/3.
// Copyright ? 2016年 admin. All rights reserved.
//#import UIKit/UIKit.h
@interface ViewController : UIViewController- (instancetype)initWithJs:(NSString *)filePath;@endViewController.m:
[objc] view plain copy在CODE上查看代码片派生到我的代码片//// ViewController.m// weexDemo3//// Created by admin on 16/8/3.
// Copyright ? 2016年 admin. All rights reserved.
//#import "ViewController.h"#import WeexSDK/WXSDKInstance.h
@interface ViewController ()@property (nonatomic, strong) WXSDKInstance *instance;@property (nonatomic, strong) UIView *weexView;@end@implementation ViewController{NSURL *jsUrl;}
- (instancetype)initWithJs:(NSString *)filePath{self = [super init];if (self) {//远程js文件// NSString *path=[NSString stringWithFormat:@"",filePath];//本地js文件NSString *path=[NSString stringWithFormat:@"",[NSBundle mainBundle].bundlePath,filePath];NSLog(@"-----path:%@",path);jsUrl=[NSURL URLWithString:path];}
return self;}
- (void)viewDidLoad {[super viewDidLoad];_instance = [[WXSDKInstance alloc] init];_instance.viewController = self;_instance.frame=self.view.frame;__weak typeof(self) weakSelf = self;_instance.onCreate = ^(UIView *view) {[weakSelf.weexView removeFromSuperview];weakSelf.weexView = view;[weakSelf.view addSubview:weakSelf.weexView];};_instance.onFailed = ^(NSError *error) {NSLog(@"加载错误");};_instance.renderFinish = ^ (UIView *view) {NSLog(@"加载完成");};if (!jsUrl) {return;}
[_instance renderWithURL: jsUrl];self.view.backgroundColor=[UIColor whiteColor];}
- (void)didReceiveMemoryWarning {[super didReceiveMemoryWarning];// Dispose of any resources that can be recreated.
}
- (void)dealloc{[_instance destroyInstance];}
@end再打开AppDelegate成都软件开发公司创建导航控制器引入头文件#import "ViewController.h"创建导航视图:
[objc] view plain copy在CODE上查看代码片派生到我的代码片- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {//weex[self initWeex];ViewController *vc=[[ViewController alloc]initWithJs:@"main.js"];UINavigationController *nav=[[UINavigationController alloc]initWithRootViewController:vc];self.window.rootViewController=nav;return YES;}
运行图片不显示是因为图片加载需要自己创建模块,可以直接把demo的代码和pod配置粘过来使用
WEEX开发总结
1:上拉加载更多使用的函数;
在最开始使用的是loading这个组件;在短链接的情况下就会出现;滑动就加载;无论是否滑动到底部;
在使用list中的loadmore这个函数的时候;就会出现在短连接的情况下无法触发loadmore函数;
是这样处理的兼容性
2:ref中的topnode;是做的回到顶部的兼容;
在短连接中;使用dom.scrollToElement(el,{});这个方法是没有作用的,在长链接夏是正常的;就使用window.scroll(0,0);做兼容处理;
3:关于appear 和 disappear 方法的兼容;
;
在短连接的情况下;会直接执行appear函数;无论是否可见;disappear函数在短连接的情况下是不触发的;
具体的处理方案长链接正常使用;短连接的情况使用window.onscroll;来解决;
4:关于list中header组件的使用;
使用header组件,在长链接的情况下实现滑动到该位置,该模块吸顶,但是在短连接的情况下是不行的;
需要用正常的方式就行判断;
5:底部定位遮盖的问题;
这个空标签的使用是因为底部导航是固定定位;一般咱的处理方式是要给遮盖的那部分模块父级设置margin或者padding;但是在长短连接的还有安卓IOS的情况下会有不同的兼容问题
6:跳转以及数据请求的链接问题;
数据请求问题还有跳转问题;对于参数需要使用encodeURIComponent;进行编码;不要全部编码;
7:关于IOS8对于弹性盒模型的兼容问题;
实现上下左右居中;
实现justify-content:space-around;的效果;
8:其他问题:
在IOS上;如果你在CSS中设置了宽;'width:0;';你想要动态的改变这个元素的宽的话,该元素在IOS长链接的情况下,会首先闪一下变成你要设置的宽;最后会再次变成0;
还用对于行内元素;使用动画设置高宽的时候;无论是否设置display:block;均会报错;说style为not defind;
9:轮播图指示器的问题
在现在的开发环境下,使用的为vue2.5.3版本的;使用的时候就会报错;具体原因不清楚;但是使用行内样式;但是不要写px单位就会正常
ios中weex调用的是哪个viewcontroller
一个UIViewController的View可能有很多小的子view。这些子view很多时候被盖在最后,我们在最外层ViewController的viewDidLoad方法中,用addSubview增加了大量的子view。这些子view大多数不会一直处于界面上,只是在某些情况下才会出现,例如登陆失败的提示view,上传附件成功的提示view,网络失败的提示view等。但是虽然这些view很少出现,但是我们却常常一直把它们放在内存中。另外,当收到内存警告时,我们只能自己手工把这些view从superview中去掉。2.替代方法聪明的你,也许已经体会到了,该transitionFromViewController方法闪亮登场:苹果新的API增加了addChildViewController方法,并且希望我们在使用addSubview时,同时调用[selfaddChildViewController:child]方法将subview对应的viewController也加到当前ViewController的管理中。对于那些当前暂时不需要显示的subview,只通过addChildViewController把subViewController加进去;需要显示时再调用transitionFromViewController方法。将其添加进入底层的ViewController中。这样做的好处:1.无疑,对页面中的逻辑更加分明了。相应的View对应相应的ViewController。2.当某个子View没有显示时,将不会被Load,减少了内存的使用。3.当内存紧张时,没有Load的View将被首先释放,优化了程序的内存释放机制。3.transitionFromViewController:toViewController:duration:options:animations:completion方法-(void)transitionFromViewController:(UIViewController*)fromViewControllertoViewController:(UIViewController*)toViewControllerduration:(NSTimeInterval)durationoptions:(UIViewAnimationOptions)optionsanimations:(void(^)(void))animationscompletion:(void(^)(BOOLfinished))completion在两个子视图控制器中转换。支持的iOS5.0以及以后的版本。fromViewController:当前显示在父视图控制器中的子视图控制器toViewController:将要显示的子视图控制器duration:完成过渡的时间;单位:秒。options:指定的过渡效果。animations:转换过程中,的动画。是个Block块操作。completion:过渡完成后,执行的Block块操作。该方法,执行完以后,fromViewController指代的视图控制器的View将从界面消失;toViewController所指代的视图控制器的View将被载入到页面中。
网站标题:ios开发Weex,ios开发未来的发展前景
链接分享:http://cqwzjz.cn/article/hosshg.html