问题标签 [uiview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
23473 浏览

iphone - 在哪里确定 UIView 大小

摘要:在初始化那个视图时应该如何UIViewController知道它的 UIView 实例的大小?

UIView 的专用初始化方法是initWithFrame:(CGRect)frame方法。这将为新创建的 UIView 设置框架。UIViewController's如果请求视图控制器的视图,则可以从 loadView 方法调用此方法。UIViewController关于子类化和视图大小的状态文档:

在为视图层次结构创建视图时,您应该始终设置视图的自动调整大小属性。当视图控制器显示在屏幕上时,它的根视图通常会调整大小以适应可用空间,这可能会根据窗口的当前方向和其他界面元素(例如状态栏)的存在而有所不同。

因此,UIViewController实例应该设置这些属性。到目前为止这么好,UIViewController到目前为止不必知道它的观点有多大或将有多大。

UIViewController请求 a 的视图且视图属性为 nil 时,调用视图控制器的 loadView 方法。现在有一个问题,因为UIView需要初始化,但是视图控制器仍然不知道视图应该是什么大小。你应该初始化多大的视图?您在代码中的哪个位置确定视图大小?

您可以使用零矩形 ( CGRectZero) 初始化视图:

让调用者像这样设置视图框架:

这会从视图控制器 (viewController.view) 请求视图,从而使用 loadView 方法加载其视图。此 loadView 方法使用CGRectZero. 然后调用者设置它的框架(view.frame = ...)

问题是视图上的 frame 属性设置了两次,如果您的自定义UIView在 setFrame 方法中进行一些高级布局(例如放置和调整子视图大小),可能会导致更多的工作。您可以通过创建一个专用的初始化方法来防止这种情况,该方法UIViewController已经向调用者询问了一个 CGRect,您将其存储在一个 ivar 中。在调用 loadView 方法时,您使用此 ivar 创建视图。

去这里的好方法是什么?设置视图的框架两次(用 初始化CGRectZero,然后设置),或者给UIViewController一个新的初始化方法和一个 CGRect (从而给它一个框架属性)?或者我错过了什么,还有其他可能性吗?

0 投票
1 回答
195 浏览

uiview - 如何在 UIView 中删除子视图

在我的应用程序中有两个视图,它们的名称是 Loginview 和 sampleview

我添加到的这个登录视图[self.view addsubview:Loginview];

登录操作后。我将 self.view 更改为[self.view addsubview:sampleview];

但是那个时候loginview也在显示..

避免这种情况。如何删除子视图self.view

0 投票
3 回答
946 浏览

iphone - 我可以在释放 ViewController 的同时保留 View 吗?

我正在尝试将新视图加载到现有视图控制器中,但我想从 xib 文件中加载该视图。我的计划是创建第二个 viewController(下面代码中的 viewController1),然后保留它的视图并释放我刚刚创建的那个 viewController。我希望 viewController 会被释放并且视图会一直存在,但这似乎没有发生。

问题 1:如果视图控制器被解除分配,无论视图的保留计数是多少,它的关联视图是否也会被解除分配?在下面的示例代码中,您可以看到视图在突然消失之前的保留计数为 13。

问题2:为什么保留视图会使它的retainCount 增加3?

0 投票
1 回答
1589 浏览

iphone - 在主视图上方翻转子视图

我正在尝试构建一个位于主视图上方的子视图,该子视图大约是主视图大小的 3/4。当按下按钮时,子视图应翻转到另一个子视图。我很接近,但有两个问题。

第一个问题是第一次按下翻转按钮时,第二个子视图以全屏开始并缩小到指定的帧大小,而不是渲染任何翻转动画。

一旦第二个视图被渲染,我就可以在第一个和第二个视图之间翻转(我添加了第二个按钮来翻转以进行测试)。

我的第二个问题是,当视图翻转时,新视图在翻转之前加载,然后发生翻转。在此之前我已经构建了翻转视图,但只有当整个屏幕都是视图时才能正常工作。

这是我的主视图控制器中的代码:

这是两个按钮的代码:

非常感谢对我的任何一个问题的任何帮助!

0 投票
2 回答
4827 浏览

objective-c - UIWindow 和 UIView addSubview 问题

addSubview 方法是否实际将视图加载到应用程序中?我问的原因是因为我的应用程序中有两个两个视图。应用程序委托将两个视图添加为子视图,然后将其中一个视图放在前面。现在,我在每个视图的每个 viewDidLoad 方法中都有一个打印语句。当我运行应用程序时,应用程序委托将视图加载为子视图,并且在加载每个视图时,我实际上看到控制台打印出我放置在每个 viewDidLoad 方法中的语句。这应该是这样做的吗?

0 投票
11 回答
29190 浏览

iphone - 调整通话状态栏的大小?

如何根据笔尖的通话状态栏调整视图大小?

我认为它只是设置调整大小属性,但没有为根 UIView 启用它们。

(我认为我的主要问题是我不知道其中的任何一个被称为什么;我在任何文档中都找不到对通话状态栏的任何引用,除非它谈到了模拟器菜单命令。)

0 投票
1 回答
2395 浏览

iphone - 在方法中运行时,从 nib 加载的视图不会更新 UILabel 的内容

我在更新创建的“myInfoBox”对象的内容时遇到问题,以便在完成某些后台进程时显示。

在委托方法中,我正在创建一个新的 viewController:

以下是我对“myFirstViewController”的实现,它创建了一个“infoBox”类的实例(稍后我将展示它的代码):

在测试中发生的事情是,当 -(void)loadMainView 方法完成时,myInfoBox 对象在屏幕上创建,然后我可以在屏幕上看到后台的“myInfoBox”,而前面的 alertView(用于测试.. .) 此时屏幕是响应式的,我可以选择“是”,一旦选择“是”,就会调用委托方法。正如我在源文件中评论的那样,我使用断点监视模拟器并遵循代码,当我仍在 - (void)userInitialSetupMainThread 方法中时,更改的标签值不会被反映,但一旦完成视图更新使用最新设置的 .text 值!!呸呸呸。。

此外,myInfoBox 类的来源:

对不起,很长的帖子:)请协助!

0 投票
2 回答
4773 浏览

iphone - UIView alpha 问题

我在设置 UIView 子类对象的 alpha 值时遇到问题。有什么建议么?

我有 UIView 项目,我正在操纵其 alpha 属性来控制亮度。我正在使用 UISlider 控件在 UIView 子类中设置 alpha 属性的值,如下所示:

父对象中的 sliderValueChanged 方法改变了另一个 UIView 子类对象 OverlayView 的 alpha 值。父对象是 UIViewController 的子类 myViewController。滑块位于名为 SliderView 的第二个 UIView 子类中。

这似乎有效。当我尝试切换 UISlider 的 .hidden 属性时出现问题。当我将 .hidden 属性更改为 YES 时,

滑块消失,但 OverlayView 对象的 alpha 值重置为 0.0。滑块的值不会改变。当 UISlider 对象的隐藏属性发生变化时,我希望通过
sliderValueChanged 方法设置的 OverlayView 的 alpha 属性保持不变。

关于我做错了什么的任何建议?谢谢。

0 投票
2 回答
1649 浏览

iphone - 没有硬编码位置的动态按钮布局

我想实现一个实现 1-3 个按钮的视图(它实际上将进入 UITableView 的页脚)。我希望这些按钮的布局(以及按钮本身的大小)根据显示的按钮而改变。当您查看特定联系人时,我想要的几乎确切行为的示例位于“联系人”应用程序的“信息”屏幕底部(单击“添加到收藏夹”时会消失,其他按钮会展开以占用漂亮动画中的可用空间)。

当我在不同的布局场景中运行时,我正在对所有这些值进行硬编码,我只是想……“这不是我应该这样做的方式。”

甚至似乎 Interface Builder 有一些功能可以在标尺选项卡中为我执行此操作,但如果我能弄清楚它们是如何在手机上工作的(如果它们工作的话),我会被诅咒的。

有没有人有任何建议或在线教程可以让我找到正确的方向?

非常感谢。

0 投票
3 回答
3398 浏览

iphone - 在 3 个或更多视图之间切换

我是 iPhone 开发的新手,我真的很喜欢这个。我喜欢它,但有一件事让我很烦。如何不断切换视图?我知道如何从创建新项目时给我的第一个视图到我制作的视图,但是我如何通过这两个窗口?如何从我创建的视图中获取?

我有这个应用程序,它有一个带有 NavigationController 的主窗口,其中包含 UITableViewController。这是我的主菜单。我在右上角有一个“+”按钮,它给了我一个新的视图,但是我如何从这里获得一个新的视图?当用户选择要添加的内容时,如何推送新视图?

希望有人能理解我的问题。一些文档的链接会很好。我到处都看过。