Git Product home page Git Product logo

zhenglibao / flexlib Goto Github PK

View Code? Open in Web Editor NEW
1.7K 50.0 259.0 12.87 MB

FlexLib是一个基于flexbox模型,使用xml文件进行界面布局的框架,融合了web快速布局的能力,让iOS界面开发像写网页一样简单快速

License: MIT License

Objective-C 67.42% Ruby 0.54% Swift 2.95% C 0.05% C++ 29.04%
autolayout flexbox yoga ios layout framework iphonex hot-reload screenshot masonry

flexlib's People

Contributors

ifeegoo avatar williewangwei avatar xrqjj avatar zhenglibao avatar zjjno 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  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

flexlib's Issues

提一点小建议

一直在想iOS什么时候有个XML布局的方式,框架想法很不错,但一般项目中都有一个要继承的Base控制器,这样就不能再继承其它控制器,是不是可以通过对UIViewController添加分类,再通过Runtime添加属性或hook生命周期来做些框架的事情,建议最好不要让开发者继承一个类,这样比较被动。。

TableView高度自适应

不知道为什么我把原tableView 和 cell 的源文件 放到我的工程上运行,结果高度没有自适应,demo运行的是可以的

tableView的高度Cell自适应

tableView 的Cell中我隐藏row==3 的title标签,可是cell的高度还是和没隐藏一样,不是自动调整的,不知道这个算不算bug

UIview 阴影设置问题

在 tablecell 中设置 UIView 的阴影 ,无论是在代码中直接设置,还是在Xml中,都不能生效。
image
image

XML 解析出来的 frame 为 (0,0,0,0)

















我在一个自定义的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>>

请问如何解决

您好,我写了一个继承自我自己的base类的vc,然后需求是隐藏导航栏,但是因为ios11状态栏会有偏移,所以需要设置去掉偏移量,但是此时表格就无法完全显示,很明显是高度问题,所以不知道如何设置一个正确的高度,以下是我的代码

  • (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内容相似。

tableView重用队列

我在
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。

加载本地文件资源

1.加载本地system.style资源:
除了使用@:这个关键标识符,对文件路径有什么要求?
2、加载本地图片等资源:
除了使用source:这个关键字, 对文件路径有设么要求?

建议新增获取自定义Bundle中资源的功能

组件化开发时资源文件(如图片、字体表、颜色表)往往会放在自定义的Bundle中,我看了flexlib源码发现目前没有获取自定义Bundle中资源的功能,建议增加。

如何更新xml中某一控件的LayoutAttr?

如何更新xml中某一控件的LayoutAttr?
直接通过-(void)setLayoutAttr:(NSString*) name
Value:(NSString*) value;
设置,好像是没有效果的。demo中也没有看到类似的代码

TextView 在cell 中高度变化

我想实现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;
}

lololo

image

智能提示很弱

我不知道,赋值你的智能提示代码有问题还是怎么回事,看你的智能提示很好!自动标签闭合,提示比较到位,我的就是不行,自己写闭合标签,一点不友好提示

UIView 叠加

........... /*其它布局*/

想布局叠加。类似 sub1 作为背景,显示在 sub2 的下面。如何实现。(类似Android里面的relativelayout 的效果)

xml 出来的View 重新布局

我有个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 需要如何处理,才能显示正常。

UITextField 能否在在左右设置leftView,rightView

是否能够在这个控件里设置leftView和rightViewn吗?我看到demo里没有这方面的控件,这里好像没有button那种控件,设置设选中和不选择状态的值吗?我特别期望能这个布局能够跟简化的到att{bgColor:red,fontSize:12},这种就好了,现在控件上就是好乱眼睛, <style name="s3">
white
16
#333333
</style> =

持界面的热更新失败

运行最新的测试项目,实时更新界面时失败,日志输出一下信息。

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 

关于字体支持

由于我的项目中有自己加入的字体
在寻找相关字体方法中,发现仅支持以下两种字体,能否考虑增加对自添加的字体的支持
if([@"bold" compare:fontName]==NSOrderedSame)
return [UIFont boldSystemFontOfSize:fontSize];

if([@"italic" compare:fontName]==NSOrderedSame)
return [UIFont italicSystemFontOfSize:fontSize];

-(NSString*)getFlexName

-(NSString*)getFlexName; 我看到你部分页面没有实现这个方法去指定对应的xml文件,但是页面正常显示,我想知道这个方法的原理

发现一个热更新问题

我发现目前tableView中 我修改了Cell.xml中的某一个样式,必须重新运行app,按command+R组合键虽然刷新了当前界面,但是tableView并没有重载数据。

UITableView 能支持group分组吗?

目前用法都是plain style,但是有些情况下会用到 grouped,请问能否兼容支持下,把UITableView支持下flexlib,然后开放重写的方法。

Flex属性说明

Flex属性是flexGrow和flexShrink的简写形式:
flexGrow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。
flexShrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。

那是不是说:
flex:1 <=> flexGrow:1 | flexShrink:1
flex:0 <=> flexGrow:0 | flexShrink:0

请问朋友圈这种图片怎么操作?

simulator screen shot - iphone se - 2017-12-25 at 17 00 07


这里的九宫格图片, 高度是如果代码不给 height 这个layout 值, 九宫格内的图片就会根据 image 的大小进行高度延展, 怎么才能给他这个宽高比呢? 我尝试了自定义一个 UIImageView , 重写 setFrame 方法, 强制改成 1:1 , 但是cell 的高度是根据我 xml 中的 height 布局的....

添加自定义属性

我想添加一个order排序属性在用户代码片段中添加xml中添加之后感觉不起作用,我应该怎样添加

支持 Swift 4.0 吗?

我想在 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'

FlexScrollView问题

FlexScrollView 通过FlexBaseVC的xml添加 然后在控制器中FlexFrameView通过xml方法生成对象 FlexScrollView对象添加FlexFrameView对象为子对象 结果FlexScrollView对象中的FlexRootView子控件高度为0 导致FlexRootView对象加载在高度为0的父类中 无法点击也无法拖动

关于UIButton的问题

我一直尝试在xml中设置字体大小,以及文字的对齐方式,一直不得法。

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.