首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

浅汇-iOS UI布局

就会无法获得足够的宽度。...如果父试图使用的是 Frame  , 子试图使用 AutoLayout  不会有问题, 使用Frame 来布局UI是开始的做法,现在也有很多人仍然钟情与这种方法,这种方法很直观,使用起来也很简单,但是他的简单决定了他在屏幕适配和内容自适应上的局限性...通常使用这种方法布局是通过比例放缩来达到的,比如使用如下的宏来替换掉系统的CGRectMake(x , y , width , height) 布局来达到屏幕适配的效果。...而且同层级的试图  无法达到重合布局,两个试图重合的话只有是  父/子视图的关系。...2、实现了UIView内子视图的自动布局; 3、实现了UIScrollView内容高度根据内部子视图的内容高度动态设置; 4、实现了一个UITableView有多个不同Cell的时候,所有cell高度自适应

2.1K20

深入详解iOS适配技术

UIViewAutoresizingFlexibleLeftMargin // 自动弹性的调整与superView左边的距离,保证与superView右边的距离不变。   ...UIViewAutoresizingFlexibleRightMargin // 自动弹性的调整与superView的右边距离,保证与superView左边的距离不变。   ...UIViewAutoresizingFlexibleHeight // 自动弹性的调整自己的高度,保证与superView顶部和底部的距离不变。...width按比例调整,高度固定,右边距固定,上边距固定,下边距固定(下图的xib中预览效果与实际效果有差,实际效果是view的上边距不变)(这种约束方式相当于上下间距固定,高度固定,那么父控件高度缩放的时候就会产生冲突...原因在于,UILabel是根据内容自动调整宽度和高度,如果没有内容,那么宽度和高度就是0,导致UILabel无法显示。

8.5K70
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    iOS-屏幕适配实现(Autoresizing)

    6条线,上下左右以及空间内的两条红色交叉线如下图 上下左右四条红色的线分别表示此视图距离父视图的上下左右边的约束各式多少 中间两条上下交叉的线表示,此视图的高度与宽度是否随着父视图的变化而按比例变化...@property(nonatomic) UIViewAutoresizing autoresizingMask; //是一个枚举值,作用是自动调整子控件与父控件中间的margin(间距)或者子控件的宽高...= 1 高度可变 UIViewAutoresizingFlexibleBottomMargin = 1 与父视图上边间距固定,下边可变 };...注意:UIView的autoresizesSubviews属性为YES时(默认为YES),autoresizingMask才会生效,也就是说,当我们想要利用autoresizingMask指定某个控件和其父控件的关系时候...UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin 左边距、右边距、宽按比例调整

    27610

    【IOS开发基础系列】Autolayout自动布局专题

    2. - (void) addConstraints: (NSArray *) constraints    NS_AVAILABLE_IOS(6_0);         在使用自动布局之前要对子视图的布局方式进行调整...,用到这个UIView的属性。...ZXPAutoLayout详细教程点此- github地址点此 //设置一个背景为半透明红色的view,上下左右四边都距离superview的距离为10 UIView *bgView = [UIView...,一定要设置全;     3、对于TableView等大型视图控件,默认顶行就行,无须手动考虑导航条与状态栏高度;         重点参考IM_RAC项目中,IMSingleChatVC的自动布局设置...4.1.2 Constraint可以只使用部分,细节控件可去代码中做 4.1.3 Constraint中设计的布局一定与代码中设计得布局保持一致         使用Storyboard进行布局设计后,

    34940

    扒虫篇-Bug日志 Ⅵ

    8.动态获取文字高度时,调整Label后总是仍然显示不完全(有省略) [bgView addSubview:rightLabel[i]]; rightLabel[i].sd_layout...选择B后 不知何种原因,B是无效的,如果勾选 Automatically manage signing 后就无法指定某个配置文件签名打包了。...10.为UIView添加边框时的Bug 这个问题也不是难,就是隐藏性比较强,稍不注意,不认真分析,想当然的话就会被困住很久。 ?...这是因为:self.whiteBgView的高度是0,造成的,我晕。正确的设置为,self.whiteBgView高度动态设置好了后再加边框,这样就不会出现这样的问题了。...self.sd_layout.heightIs(Scale_Y(150)); } completion:^(BOOL finished) { [self addBorad]; //高度设置好以后再设置边框

    83350

    iOS界面布局之一——使用autoresizing进行动态布局

    iOS界面布局之一——使用autoresizing进行动态布局 autoresizing是iOS中传统的界面自动布局方式,通过它,当父视图frame变换时,子视图会自动的做出相应的调整。...       = 1 高度可变     UIViewAutoresizingFlexibleBottomMargin = 1 与父视图上边间距固定,下边可变 }; 下面我们通过效果来看这些属性的作用...改变view1的frame如下: UIView * view1 = [[UIView alloc]initWithFrame:CGRectMake(20, 40, 300, 300)]; 效果如下: ?...可以看出,这时子视图的高度是随父视图变化而自动改变的。...这时子视图的左边是随父视图变化而可变的。 同理,UIViewAutoresizingFlexibleRightMargin将使子视图右边与父视图的距离可变。

    70820

    iOS layout相关方法

    layoutSubviews 5.旋转Screen会触发父UIView上的layoutSubviews事件 6.改变UIView大小的时候也会触发父UIView上的layoutSubviews事件 在苹果的官方文档中强调...the autoresizing behaviors of the subviews do not offer the behavior you want.layoutSubviews 当我们在某个类的内部调整子视图位置时...假设有个UILabel 添加它距离左边的距离约束为left的constraint 值为 10 现在我们想让它距左边的距离以动画形式改变为100 如果这么做 UIView.animateWithDuration...:120.0 高度:24.0 实际宽度:50.0 实际高度:50.0 实际宽度:120.0 实际高度:24.0 有上面的例子可以看出 sizeThatFits 返回“最佳”大小以适应给定大小...不实际调整视图。 sizeToFit 会根据sizeThatFits返回的最佳大小进行调整视图。

    1.1K10

    iOS开发常用之UI模糊效果、自动版式

    模糊效果 FXBlurView - 是一个UIView子类,支持iOS5.0以上版本,支持静态,动态模糊效果,继承与UIView的模糊特效。...UICustomActionSheet - 通过模糊背景来着重强调与菜单相关的元素 - 对话框里面已经收藏。...SABlurImageView - 支持渐变动画效果的图像模糊化类库.PS与前几天推存类SAHistoryNavigationViewController是同一位作者。...Auto-Layout-Showcase - swift,AutoLayout进阶演示,宽高比约束,比例约束,不等约束,视差约束,低优先级约束等高级用法,无需写码即可进行复杂页面布局,Demo还动态模拟了各屏幕下的效果...支持Cell,Label和Tableview高度自适应,致力于做最简单易用的AutoLayout库。 Neon.swift - 功能强大的UI布局神器。

    1.6K30

    iOS 优化界面流畅的技巧

    UIView 的关于显示相关的属性(比如 frame/bounds/transform)等实际上都是 CALayer 属性映射来的,所以对 UIView 的这些属性进行调整时,消耗的资源要远大于一般的属性...对此你在应用中,应该尽量减少不必要的属性修改。 当视图层次调整时,UIView、CALayer 之间会出现很多方法调用与通知,所以在优化性能时,应该尽量避免调整视图层次、添加和移除视图。...不论通过何种技术对视图进行布局,其最终都会落到对 UIView.frame/bounds/center 等属性的调整上。...但如果你对性能的要求并不那么高,可以尝试用 TableView 的预估高度的功能,并把每个 Cell 高度缓存下来。...如果这时仍然继续绘制,就会造成大量的 CPU 资源浪费,甚至阻塞线程并造成后续的绘制任务迟迟无法完成。

    1.5K10

    View编程指南(三)

    运行时调整View的大小和位置 每当view的大小发生变化时,其subview的大小和位置都必须相应地改变。 UIView类支持view hierarchy中的view的自动和手动布局。...上图中灵活的宽度和高度常数与“AutoSizing”控件图中的宽度和大小指示器具有相同的行为。 但是,保证的行为和使用是有效的逆转。...当打电话时,状态栏高度会增加,当用户结束通话时,状态栏的大小会减小。 在运行时修改view 随着应用程序从用户接收输入,他们调整其用户界面以响应该输入。...当键盘出现时,您可以重新定位或调整view的大小,使其不会位于键盘下方。有关如何与键盘交互的信息,请参阅Text Programming Guide for iOS。...与view关联的layer类型在创建view后无法更改。 因此,每个view使用layerClass类方法来指定其layer对象的类。

    1.8K30

    iOS 面试策略之系统框架-UIKit

    layoutSubviews 是用来自定义视图尺寸调整的。它是系统自动调用的,开发者不能手动调用。我们能做的就是重写该方法,让系统在尺寸调整时能按照希望的效果去进行布局。...iPhone X 中一般是指扣除了顶部的 status bar(高度为20)、navigation bar(高度为44)和底部的 home indicator 区域(高度为34),这样应用的内容不会被刘海挡住或是影响底部手势操作...SafeAreaInsets 限定了 SafeArea 区域与整个屏幕之间的布局关系。一般我们用上下左右 4 个值来获取 SafeArea 与屏幕边缘之间的距离。...其基本函数为+ animateWithDuration:animations:,其中持续时间(duration)为基本参数,block 中对 UIView 属性的调整就是动画结束后的最终效果。...它实现的动画无法回撤、暂停、与手势交互。 CALayer Animation 是更在底层 CALayer 上的动画接口。除了 UIView Animation 可以实现的效果。

    1.5K20

    用AutoLayout实现分页滚动

    容器视图添加N个页视图,对于水平分页滚动来说容器视图的高度和滚动视图一样,而宽度则是滚动视图的宽度乘以页视图的数量,页视图的尺寸则和滚动视图保持一致,对于垂直分页滚动来说容器视图的宽度和滚动视图一样,而高度则是滚动视图的高度乘以页视图的数量...,这里也会确定线性布局的高度。...其原因是无论是分页滚动还是不分页滚动,在滚动时都是通过调整滚动视图的contentOffset来实现的。...而当滚动视图进行横竖屏切换时不会调整对应的contentOffset值,这样就导致了在屏幕方向切换时的滚动位置出现异常。...调整到正确的contentOffset int pageIndex = scrollView.contentOffset.x / scrollView.frame.size.width;

    1.9K40

    《Motion Design for iOS》(二十六)

    alertDimension/2, self.window.bounds.size.height/2 - alertDimension/2, alertDimension, alertDimension); UIView...*alertView = [[UIView alloc] initWithFrame:alertViewFrame]; 首先,我们需要创建一个UIView对象来作为我们的虚拟警告框,并将其位置设为屏幕的正中央...这是通过将全屏幕的宽和高除以2并减去警告框的宽和高的一半完成的。我喜欢设置一个对象的frame到它完成动画后的最终位置,然后通过操作它的transform属性来调整它的大小或者位置。...通过CGAffineTransformMakeScale()函数在变换矩阵中仅仅操作比例值来设置它的transform属性来让比例更大些。...= 0.3f; alertView.layer.shadowRadius = 10.0f; [self.window addSubview:alertView]; 如果我将alpha值调回1.0并移除比例增加的变换然后截屏

    20120
    领券