当我们设置self.navigationItem.hidesbackbutton = yes;时,实际上将如何调用哪种方



我很好奇我们设置self.navigationItem.hidesBackButton = YES/NO;时实际调用了什么方法。我是curios,因为属性不是方法,当我们分配给任何实际运行的值时,它可以立即隐藏或显示回式按钮。我一直在想有一个 run loop 不断检查这样的东西。

来自Apple Document

视图绘图周期 Uiview类使用按需图形模型来呈现内容。当屏幕上首次出现视图时,系统要求其绘制其内容。该系统捕获了此内容的快照,并将快照用作视图的视觉表示。如果您永远不会更改视图的内容,则视图的绘图代码可能再也不会被调用。快照图像已重复使用涉及视图的大多数操作。如果您确实更改了内容,则将视图已更改通知系统。然后,视图重复绘制视图并捕获新结果快照的过程。

当视图的内容更改时,您不会直接重新刷新这些更改。取而代之的是,您使用setneedsdisplay或setNeedsdisplayinRect:method bection the视图无效。这些方法告诉系统,视图的内容发生了变化,需要在下一个机会时重新绘制。系统等待直到当前运行循环的末端,然后启动任何图纸操作。此延迟使您有机会一次,从层次结构中添加或删除视图,隐藏视图,调整视图大小和重新定位视图。然后,您所做的所有更改都会同时反映

因此,由于Uikit基于MVC,当您设置此属性时,该视图的模型会更改。

然后,在中,下一个运行循环 view will redraw ,然后您会发现它是隐藏的。

>

此调用背后的方法是由iOS称为Redraw的自动调用的,也许是一些私人Redraw方法。

希望这对您有帮助

最新更新