标签: uiview

76
推荐指数
8
解决办法
8万
查看次数

如何将UIViewController的视图添加为子视图

请注意,对于googlers来说,这个QA已经过时了六年!

正如下面的Micky和其他人所提到的,现在每天都在iOS中使用Containers.


我有一个控制许多子视图的ViewController.当我单击其中一个按钮时,我初始化另一个视图控制器并将其视图显示为该视图的子视图.但是子视图超出了子视图框架的边界,并且实际上填满了整个屏幕.

可能有什么不对?我认为问题是UIViewController的视图有一个框架(0,0,320,460),因此填充整个屏幕(尽管只有在子视图边界内触摸时它才会接收到触摸事件).如何调整框架大小以适合子视图.

简而言之,我需要帮助将viewcontroller的视图作为子视图添加到另一个viewcontroller的视图中.

谢谢!

iphone uiviewcontroller uiview

75
推荐指数
6
解决办法
12万
查看次数

在故事板中重用uiview xib

我通常喜欢在界面构建器中创建和设计我的uiviews.有时我需要在xib中创建一个可以在故事板中的多个视图控制器中重用的视图.

interface-builder xib uiview uistoryboard autolayout

74
推荐指数
4
解决办法
3万
查看次数

简单的方法来改变UIView的位置?

我使用以下代码更改UIView的位置,而不更改视图的大小.

CGRect f = aView.frame;
f.origin.x = 100; // new x
f.origin.y = 200; // new y
aView.frame = f;
Run Code Online (Sandbox Code Playgroud)

是否有更简单的方法来改变视图位置?

iphone uiview

71
推荐指数
6
解决办法
12万
查看次数

当键盘出现在iOS中时,向上移动UIView

我有一个UIView,它不在UIScrollView中.我想在键盘出现时向上移动我的视图.在我尝试使用此解决方案之前:如何在键盘存在时使UITextField向上移动?.

它工作正常.但是在文本字段中插入数据后,它会转到另一个视图,当我回到这个页面时,它只是跳跃,我看不到我的文本字段.有没有更好的解决方案来解决这个问题?

xcode objective-c uiviewcontroller uiview ios

71
推荐指数
9
解决办法
11万
查看次数

删除所有影响UIView的约束

我有一个UIView,通过几个约束放在屏幕上.一些约束由superview拥有,其他约束由其他祖先拥有(例如,可能是UIViewController的view属性).

我想删除所有这些旧约束,并使用新约束将其置于新的位置.

如果不为每个约束创建一个IBOutlet并且必须记住哪个视图拥有所述约束,我该怎么做呢?

详细说明,天真的方法是为每个约束创建一堆IBOutlet,然后涉及调用代码,例如:

[viewA removeConstraint:self.myViewsLeftConstraint];
[viewB removeConstraint:self.myViewsTopConstraint];
[viewB removeConstraint:self.myViewsBottomConstraint];
[self.view removeConstraint:self.myViewsRightConstraint];
Run Code Online (Sandbox Code Playgroud)

这段代码的问题在于,即使在最简单的情况下,我也需要创建2个IBOutlet.对于复杂的布局,这可以轻松达到4或8个所需的IBOutlet.此外,我需要确保在正确的视图上调用我的删除约束的调用.例如,想象一下,myViewsLeftConstraint拥有viewA.如果我不小心打电话[self.view removeConstraint:self.myViewsLeftConstraint],什么都不会发生.

注意:方法constraintsAffectingLayoutForAxis看起来很有前景,但仅用于调试目的.


更新:很多我收到处理问题的答案self.constraints,self.superview.constraints或一些人的变种.这些解决方案不起作用,因为这些方法只返回视图所拥有的约束,而不是影响视图的约束.

要澄清这些解决方案的问题,请考虑以下视图层次结构:

  • 祖父
    • 父亲
        • 儿子
        • 女儿
      • 哥哥
    • 叔叔

现在假设我们创建了以下约束,并始终将它们附加到最近的共同祖先:

  • C0:我:和儿子一样(由我拥有)
  • C1:我:宽度= 100(由我拥有)
  • C2:我:和兄弟一样高(由父亲拥有)
  • C3:我:和叔叔一样(由祖父拥有)
  • C4:我:和祖父一样(由祖父拥有)
  • C5:兄弟:和父亲一样(由父亲拥有)
  • C6:叔叔:和祖父一样(由祖父拥有)
  • C7:儿子:和女儿一样(由我拥有)

现在假设我们要删除所有影响的约束Me.任何适当的解决方案应该删除[C0,C1,C2,C3,C4],没有别

如果我使用self.constraints(自我就是我),我会得到[C0,C1,C7],因为这些是我拥有的唯一约束.显然,删除它是不够的,因为它丢失了[C2,C3,C4].此外,它正在C7不必要地删除.

如果我使用self.superview.constraints(自我就是我),我会得到[C2,C5],因为那些是父拥有的约束.显然我们无法删除所有这些因为C5完全无关Me.

如果我使用grandfather.constraints,我会得到[C3,C4,C6].同样,我们无法删除所有这些,因为 …

constraints objective-c uiview ios autolayout

71
推荐指数
6
解决办法
8万
查看次数

确定UIView是否对用户可见?

是否可以确定我UIView的用户是否可见?

我的视图被subview多次添加到一个Tab Bar Controller.

此视图的每个实例都有一个NSTimer更新视图的实例.

但是,我不想更新用户不可见的视图.

这可能吗?

谢谢

iphone visibility uitabbarcontroller nstimer uiview

69
推荐指数
6
解决办法
7万
查看次数

选择UITableViewCell时,UIView backgroundColor消失

我在界面构建器中有一个简单的tableViewCell构建.它包含一个包含图像的UIView.现在,当我选择单元格时,会显示默认的蓝色选择背景,但我的UIView的backgroundColor消失了.

我的UITableViewCell的实现文件没有做任何特别的事情.它只是init和&返回self,我在setSelected中所做的就是调用super.

如何在选择tableView时显示我的UIView backgroundColor?

interface-builder uitableview uiview ios

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

"这个UIView似乎是NSISVariable的委托,它不知道任何事情.这是一个内部UIKit错误"错误

我正在研究一个opengl项目.我使用了一些图像(2个用于xy刻度)和标签(8个)在屏幕上显示刻度.我的第一个观点是tableview我去的地方openglView.但每当我回去从openglViewtableView它给我这个错误和应用程序崩溃.

"这个UIView似乎是NSISVariable的代表,它对此一无所知.这是一个内部的UIKit错误."

有什么建议?这是因为我包含了太多的UI元素,除了那些图像和标签我也使用了一些按钮.而且我也适用affineTransform于那些图像和标签以及一个按钮.

确切的错误是:

2013-01-31 12:20:18.743 EMtouch[50496:12203] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '{ Rows:
    UILayoutContainerView:0x9835660.Height == 480 + 1*0x7e53030.marker + 1*0x7e546c0.marker
    UILayoutContainerView:0x9835660.Width == 320 + 1*0x7e52f90.marker + 1*0x7e54330.marker
    UILayoutContainerView:0x9835660.minX == 0 + 1*0x7e52ca0.marker + -0.5*0x7e52f90.marker
    UILayoutContainerView:0x9835660.minY == 0 + 1*0x7e52fd0.marker + -0.5*0x7e53030.marker
    UINavigationTransitionView:0x9837ea0.Height == 480 + 1*0x7e51bf0.marker + 1*0x7e53030.marker + 1*0x7e546c0.marker
    UINavigationTransitionView:0x9837ea0.Width == 320 + 1*0x7e519c0.marker + 1*0x7e52f90.marker + 1*0x7e54330.marker
    UINavigationTransitionView:0x9837ea0.minX == 0 + 1*0x7e51940.marker + …
Run Code Online (Sandbox Code Playgroud)

opengl-es uikit uiview ios

68
推荐指数
1
解决办法
2754
查看次数

如何将UIView转换为图像

我想将UIView转换为图像并将其保存在我的应用程序中.有人可以请告诉我如何截取视图的截图或将其转换为图像,以及将其保存在应用程序(不是相机胶卷)的最佳方法是什么?以下是视图的代码:

var overView   = UIView(frame: CGRectMake(0, 0, self.view.frame.width/1.3, self.view.frame.height/1.3))
overView.center = CGPointMake(CGRectGetMidX(self.view.bounds),
CGRectGetMidY(self.view.bounds)-self.view.frame.height/16);
overView.backgroundColor = UIColor.whiteColor()
self.view.addSubview(overView)
self.view.bringSubviewToFront(overView)
Run Code Online (Sandbox Code Playgroud)

screenshot uiview ios swift

68
推荐指数
11
解决办法
7万
查看次数