zhenglibao / flexlib Goto Github PK
View Code? Open in Web Editor NEWFlexLib是一个基于flexbox模型,使用xml文件进行界面布局的框架,融合了web快速布局的能力,让iOS界面开发像写网页一样简单快速
License: MIT License
FlexLib是一个基于flexbox模型,使用xml文件进行界面布局的框架,融合了web快速布局的能力,让iOS界面开发像写网页一样简单快速
License: MIT License
运行最新的测试项目,实时更新界面时失败,日志输出一下信息。
FlexLib_Example[3371:101963] Flexbox: preview base url not set
FlexLib_Example[3371:89244] Flexbox: Reload Error.
FlexLib_Example[3371:89244] Flexbox: reloading layout file
我不能实时看到运行效果
Flexbox: preview base url not set
可是我已经设置了baseurl
使用FlexLib做的UI组件,桥接到RN后,在RN中使用时全都失效,不会自动渲染了怎么办...
我在一个自定义的view里面,然后在initWithFrame 里面调用
FlexFrameView * frameview = [[FlexFrameView alloc] initWithFlex:@"bellus3dcapture" Frame:self.frame Owner:self];
[self addSubview:frameview];
LogDebug(@"previewUIView:%@, captureButton:%@", _previewUIView, _captureButton);
将xml布局加载进自定义的view,并添加Log进行调试。结果Log显示
previewUIView:<UIView: 0x10db02e80; frame = (0 0; 0 0); layer = <CAGradientLayer: 0x1c403d960>>, captureButton:<UIImageView: 0x10db038a0; frame = (0 0; 0 0); opaque = NO; userInteractionEnabled = NO; layer = <CAGradientLayer: 0x1c403dd00>>
请问如何解决
组件化开发时资源文件(如图片、字体表、颜色表)往往会放在自定义的Bundle中,我看了flexlib源码发现目前没有获取自定义Bundle中资源的功能,建议增加。
我一直尝试在xml中设置字体大小,以及文字的对齐方式,一直不得法。
(void)viewDidLoad {
[super viewDidLoad];
FlexFrameView *view = [[FlexFrameView alloc]initWithFlex:nil Frame:CGRectMake(0, 0, KDeviceWith, KDeviceHeight-kTabBarHeight-kStatusBarHeight) Owner:self];
self.view = view;
[self layout];
if (@available(iOS 11.0, *)) {
self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
}else{
self.automaticallyAdjustsScrollViewInsets = YES;
}
}
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.navigationController.navigationBar.hidden = YES;
}
//布局
-(void)layout{
_heightArray = [NSMutableArray array];
_tableView.delegate = self;
_tableView.dataSource = self;
_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
_cell = [[YRFlexTestCell alloc]initWithFlex:nil reuseIdentifier:nil];
[self dealData];
}
以下跟你demo的TestTable内容相似。
1.加载本地system.style资源:
除了使用@:这个关键标识符,对文件路径有什么要求?
2、加载本地图片等资源:
除了使用source:这个关键字, 对文件路径有设么要求?
Flex属性是flexGrow和flexShrink的简写形式:
flexGrow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。
flexShrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。
那是不是说:
flex:1 <=> flexGrow:1 | flexShrink:1
flex:0 <=> flexGrow:0 | flexShrink:0
touchView多次快速点击后modalView不显示了
https://github.com/lztbwlkj/FlexLibTest.git
支持swift吗
我想在 Swift 4.0 的项目上使用,但是好像并不支持
-[GDataXMLNode attributeForName:]: unrecognized selector sent to instance 0x60400004abc0
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[GDataXMLNode attributeForName:]: unrecognized selector sent to instance 0x60400004abc0'
一直在想iOS什么时候有个XML布局的方式,框架想法很不错,但一般项目中都有一个要继承的Base控制器,这样就不能再继承其它控制器,是不是可以通过对UIViewController添加分类,再通过Runtime添加属性或hook生命周期来做些框架的事情,建议最好不要让开发者继承一个类,这样比较被动。。
不知道为什么我把原tableView 和 cell 的源文件 放到我的工程上运行,结果高度没有自适应,demo运行的是可以的
FlexScrollView 通过FlexBaseVC的xml添加 然后在控制器中FlexFrameView通过xml方法生成对象 FlexScrollView对象添加FlexFrameView对象为子对象 结果FlexScrollView对象中的FlexRootView子控件高度为0 导致FlexRootView对象加载在高度为0的父类中 无法点击也无法拖动
比如说有个view是{0, 0, 375, 400},另外一个view是{0, 300, 375, 200}
如题
FlexBaseTableCell 里面添加FlexCollectionCell cell怎么根据CollectionCell的内容大小自适应高度
我有个View用xml布局的。分上下两部分。上部分高度不固定 flex:1 , 下部分高度固定 20.
然后使用 FlexFrameView 加载它
[[FlexFrameView alloc] initWithFlex:@"xmlname"
Frame:CGRectMake(0, 0, 200,100)
Owner:self];
并将该 FlexFrameView 加进200X100大小的View里面,此时显示正常OK。
然后因为业务原因,我会将 200X100的View 改成 200X50大小的View。这时候 FlexFrameView 需要如何处理,才能显示正常。
是否能够在这个控件里设置leftView和rightViewn吗?我看到demo里没有这方面的控件,这里好像没有button那种控件,设置设选中和不选择状态的值吗?我特别期望能这个布局能够跟简化的到att{bgColor:red,fontSize:12},这种就好了,现在控件上就是好乱眼睛, <style name="s3">
white
16
#333333
</style> =
、
tableView 的Cell中我隐藏row==3 的title标签,可是cell的高度还是和没隐藏一样,不是自动调整的,不知道这个算不算bug
TouchView多次快速点击后。点击事件调用了但是ModalView不显示了
我想实现TextView在cell中,TextView高度可以变化,所以在cell 中这样实现,cell可以自适应高度,可是变化的尺寸会有偏差(如图 蓝色是self.planTextView.rootView ),求指导还有更好的实现方法吗
- (instancetype)initWithFlex:(NSString *)flexName reuseIdentifier:(NSString *)reuseIdentifier {
if (self = [super initWithFlex:flexName reuseIdentifier:reuseIdentifier]) {
self.planTextView.rootView.onDidLayout = ^() {
UITableView *tableView = self.superview.superview;
[tableView beginUpdates];
[tableView endUpdates];
};
}
return self;
}
-(NSString*)getFlexName; 我看到你部分页面没有实现这个方法去指定对应的xml文件,但是页面正常显示,我想知道这个方法的原理
如何更新xml中某一控件的LayoutAttr?
直接通过-(void)setLayoutAttr:(NSString*) name
Value:(NSString*) value;
设置,好像是没有效果的。demo中也没有看到类似的代码
我不知道,赋值你的智能提示代码有问题还是怎么回事,看你的智能提示很好!自动标签闭合,提示比较到位,我的就是不行,自己写闭合标签,一点不友好提示
touchView多次快速点击,点击事件调用但是ModalView不显示了
demo地址:https://github.com/lztbwlkj/FlexLibTest.git
storyboard 中 使用XML 布局的VC
FlexBaseVC的子视图隐藏了导航栏之后视图没有自动上移
FlexFrameView怎样才能跟FlexBaseVC一样自动支持横竖屏
想布局叠加。类似 sub1 作为背景,显示在 sub2 的下面。如何实现。(类似Android里面的relativelayout 的效果)
目前用法都是plain style,但是有些情况下会用到 grouped,请问能否兼容支持下,把UITableView支持下flexlib,然后开放重写的方法。
我发现目前tableView中 我修改了Cell.xml中的某一个样式,必须重新运行app,按command+R组合键虽然刷新了当前界面,但是tableView并没有重载数据。
.xml里是否支持使用自定义的view?
能不能有多个.style文件
由于我的项目中有自己加入的字体
在寻找相关字体方法中,发现仅支持以下两种字体,能否考虑增加对自添加的字体的支持
if([@"bold" compare:fontName]==NSOrderedSame)
return [UIFont boldSystemFontOfSize:fontSize];
if([@"italic" compare:fontName]==NSOrderedSame)
return [UIFont italicSystemFontOfSize:fontSize];
我想添加一个order排序属性在用户代码片段中添加xml中添加之后感觉不起作用,我应该怎样添加
我在
if (cell == nil) {
cell = [[QWPhotoHeadTVCell alloc] initWithFlex:nil reuseIdentifier:@"QWPhotoHeadTVCell"];
}
中打了断点,发现根本不会走到断点处。
然后我在cell中重写的- (void)onInit方法中打了断点,发现走的逻辑是
[FlexBaseTableCell dequeueReusableCellWithIdentifier:@""];
[FlexBaseTableCell internalInit:nil];
[FlexBaseTableCell onInit];
然后我在自定义的cell中的- (void)onInit,打印了self的地址,发现基本上没有太多重复的。
感觉是没有没有使用重用队列,而是每次重新创建了新的cell。
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.