相关疑难解决方法(0)

UIView的框架,边界,中心,原点,何时使用什么?

UIView有属性frame,bounds,center,和origin,他们都似乎是相互关联的.大多数时候,我frame在设置a的位置和大小时处理UIView.据我所知,这frame是使用全局坐标系并bounds使用局部视图的坐标(因此它的x和y为0,但并非总是如此),但是在使用什么时我仍然会感到困惑.

在什么情况下(和什么是正确的时间)的其他属性(bounds,center,origin)应使用?

frame uikit uiview bounds

194
推荐指数
3
解决办法
10万
查看次数

为什么UIView中有框架矩形和边界矩形?

虽然它在黑暗的夜晚很晚,但我不明白为什么有两个不同的矩形:框架和边界.

就像我理解的那样,只需要一个矩形来完成所有事情.将View本身相对于另一个坐标系定位,然后将其内容剪切为指定的大小.你还会用两个矩形做什么?他们如何互相互动?

有没有人有一个很好的解释?来自苹果医生和孩子拿着水果的那个人不太了解.

iphone ios

42
推荐指数
2
解决办法
2万
查看次数

iOS UITableView偏移刷新控件

我有一个受限于superview的UITableView.所以第一个单元格位于superview的顶部.这意味着在iPhone X上,第一个细胞在缺口下流血,并进入状态栏区域.哪个是完全正确的.我希望细胞在缺口下流入状态栏区域,这是当前的结果.

问题是,我还想在该表视图上进行刷新控制,以便用户可以拉动来刷新内容.但是当您在iPhone X上进行刷新时,刷新控制将被切入.我不希望刷新控制被切入.

所以基本上我想要做的是将表视图限制在superview,但是将刷新控制限制在安全区域.

我已经浏览过,看起来Apple并没有提供许多属性或方法来自定义刷新控件的行为.

我考虑过使用某种类型的自定义解决方案,但是我想到的每个自定义解决方案都会丢失刷新控件和表格视图滚动等所有预构建的物理.幕后的逻辑非常多,我真的不想牺牲刷新的感觉以及用户的感受,因为它在iOS中变得如此普遍.

关于如何让第一个细胞在缺口下出血(约束到超视图)的任何想法,但确保刷新控制不会被缺口切断(限制在安全区域)?

我还在下面附上了屏幕截图,了解了细胞如何渗入状态栏,以及如何通过缺口切断刷新控制.

编辑:我还在这里GitHub发布了一个示例项目.

但是与刷新控制相关的基本代码如下.

private lazy var refreshControl = UIRefreshControl()
override func viewDidLoad() {
    super.viewDidLoad()

    refreshControl.addTarget(self, action: #selector(handleRefresh), for: .valueChanged)
    tableView.refreshControl = refreshControl
}

@objc func handleRefresh() {
    DispatchQueue.main.asyncAfter(deadline: .now() + 3.0) {
        self.refreshControl.endRefreshing()
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

在此输入图像描述

uitableview ios uirefreshcontrol swift

9
推荐指数
2
解决办法
2416
查看次数

标签 统计

ios ×2

bounds ×1

frame ×1

iphone ×1

swift ×1

uikit ×1

uirefreshcontrol ×1

uitableview ×1

uiview ×1