美文网首页
知识点总结:06-frame,bounds,内边距等知识

知识点总结:06-frame,bounds,内边距等知识

作者: 枫之叶_小乙哥 | 来源:发表于2017-01-09 23:56 被阅读103次

1.frame和bounds的重新认识

  • frame(参照物是:父控件)

    • 父控件 内容的左上角为坐标原点, 计算出的控件自己 矩形框的位置和尺寸(如果父控件内容坐标发生改变,则子控件也会随之改变,将矩形框看成是裁剪框)
  • bounds(参照物是:自己, 矩形框是裁剪框, 矩形框显示的是裁剪的内容,但是矩形框在父控件的位置未改变,只是显示的内容随bounds改变)

    • 控件自己 内容的左上角为坐标原点, 计算(即裁剪出)出的控件自己 矩形框的位置和尺寸(即将裁剪出来的区域显示出来)

    • 矩形框其内容的坐标就是bounds.origin,即偏移量

  • 概括

    • frame.size == bounds.size(尺寸是相等的)
    • scrollView.bounds.origin == scrollView.contentOffset(scrollview中初始的偏移量和初始的bounds一样)

2.bounds和frame的区别

bounds和frame的区别.png

3.矩形框和内容的理解

  • 矩形框
    • 控件自己的显示位置和尺寸(在父控件)
  • 内容
    • 控件内部的东西,比如它的子控件(在子控件的内容)

在使用UITableViewController过程中,可能会出现的错误

@interface TestTableViewController : UITableViewController

@end

'-[UITableViewController loadView] instantiated view controller with identifier "UIViewController-BYZ-38-t0r" from storyboard "Main", but didn't get a UITableView.'
  • 造成这个错误的原因

    • 错误地将一个UIViewController当做UITableViewController来用
  • 错误做法


    Snip20151108_134.png
  • 正确做法


    Snip20151108_135.png
Snip20151108_137.png

3.contentInset的调整(调整contentInset,会改变bounds)

  • 调整contentInset, 会使内容整体移动,但是内容的原点并没有下移,类似HTML的padding,即间距, 因此矩形框的左上角所处的坐标的y值是负数,所以改变了bounds
  • tableView的headerView会影响内容的原点,contentInset不会,但是两者的设置都会影响矩形框的bounds.origin(相对于原来的内容),即会影响bounds和偏移量
  • 默认情况下, 如果一个控制器A处在导航控制器管理中, 并且控制器A的第一个子控件是UIScrollView, 那么就会自动调整这个UIScrollView的contentInset
    • UIEdgeInsetsMake(64, 0, 0, 0) // 有导航栏
    • UIEdgeInsetsMake(20, 0, 0, 0) // 没有导航栏
  • 默认情况下, 如果一个控制器A处在导航控制器管理中, 并且导航控制器又处在UITabBarController管理中, 并且控制器A的第一个子控件是UIScrollView, 那么就会自动调整这个UIScrollView的contentInset
    • UIEdgeInsetsMake(64, 0, 49, 0)
  • 如何禁止上述的默认问题?
控制器A.automaticallyAdjustsScrollViewInsets = NO;

4.文字内容换行

  • 如何让storyboard\xib中的文字内容换行
    • 快捷键: option + 回车键
    • 在storyboard\xib输入\n是无法实现换行的
  • 在代码中输入\n是可以实现换行的
self.label.text = @"534534534\n5345345\n5345";

5.修改状态栏样式

  • 使用UIApplication来管理(iOS7 以前)
Snip20151108_152.png
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

在Info.plist中做了图中的配置,可能会出现以下警告信息

Snip20151108_153.png

View controller-based status bar appearance(在Executable file下添加View controller-based status bar appearance目录)默认是YES,如果选择了NO则一定要用UIApplication来设置状态栏的样式

  • 使用UIViewController来管理(iOS7 以后苹果推荐使用)
@implementation XMGLoginRegisterViewController
// 每个控制器的状态栏由每个控制器自己决定更加科学,
//如果用UIApplication来管理,则跳转控制器以后,还要通过UIApplication重新设置,这样会更为不便
- (UIStatusBarStyle)preferredStatusBarStyle
{
    return UIStatusBarStyleLightContent;
}
@end

6.在xib\storyboard中使用KVC

Snip20151108_177.png

相关文章

  • 知识点总结:06-frame,bounds,内边距等知识

    1.frame和bounds的重新认识 frame(参照物是:父控件)以父控件 内容的左上角为坐标原点, 计算出的...

  • 盒模型(9)

    掌握盒模型相关知识点了解IE盒模型和W3C 盒模型区别 问答 一、盒模型包括哪些属性? 内边距(上右下左) 外边距...

  • css盒模型 块级元素 行内元素

    盒模型是CSS的核心知识点之一,页面上的每个元素都被看成一个矩形框,这个框由元素的内容、内边距、边框和外边距组成 ...

  • 《第一行代码:Android》读书笔记——第3章 UI基础

    (一)Android常用控件及简单用法 用法总结如下图: 补充: margin:外边距;padding:内边距。 ...

  • 07-client属性

    clientWidth = 宽度 + 内边距offsetWidth = 宽度 + 内边距 + 边框 clientH...

  • CSS

    padding 顺时针方向 上内边距是 10px 右内边距是 5px 下内边距是 15px 左内边距是 20px

  • 内边距

    什么是内边距; 是指容器中的内容和容器上右下左之间的距离 什么是外边距; 只指标签和标签之间的距离 外边距在水平方...

  • 内边距

    内边距 1.内边距为边框和内容之间的内边距 2.格式 padding-top padding-right padd...

  • 内外边距

    外边距 内边距

  • css基础——margin和padding

    代码: 总结: 1、外边距:margin,自己不增加2、内边距:padding,效果会是自己也增加,其实自己没变,...

网友评论

      本文标题:知识点总结:06-frame,bounds,内边距等知识

      本文链接:https://www.haomeiwen.com/subject/vrtkbttx.html