我知道一个能给前面带来视野的功能.
[self.view bringSubviewToFront:myView];
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一个功能将子视图发送到后面.
我有UIView,它有n个子视图.假设n为600个子视图.我知道有一种方法可以通过以下代码隐藏所有子视图
for (UIView *subView in mainView.subviews) {
subView.hidden = YES;
}
Run Code Online (Sandbox Code Playgroud)
但是有没有任何其他正确的方法或API来隐藏所有的子视图.谢谢提前.
我正在使用Xcode 6在swift中构建一个iOS应用程序.我正在尝试在滚动视图中嵌入一个带有表视图的视图控制器.当用户拖动表视图时,假设移动表,而不是它所嵌入的滚动视图.我已经做了这个插图,以清除我的视图并查看控制器层次结构:

红色区域是滚动视图的内容大小区域.
绿色和蓝色区域是嵌入在滚动视图中的不同视图控制器.
黄色区域是蓝色视图控制器中的文本字段.
橙色区域是蓝色视图控制器中的表格视图.
我已经在scrollview中启用了分页,因此它可以捕捉到绿色或蓝色视图控制器.如何将表格视图弹出到视图层次结构的顶部,以便滚动滚动视图的唯一方法是在文本字段中拖动.
import UIKit
class RootViewController: UIViewController, UIScrollViewDelegate {
var scrollView: UIScrollView!
var greenViewController: GreenViewController!
var blueViewController: BlueViewController!
override func viewDidLoad() {
super.viewDidLoad()
scrollView = UIScrollView(frame: CGRectMake(0, 0, self.view.frame.width, self.view.frame.height))
scrollView.delegate = self
scrollView.pagingEnabled = true
self.greenViewController = self.storyboard?.instantiateViewControllerWithIdentifier("Green View Controller") as! GreenViewController
self.blueViewController = self.storyboard?.instantiateViewControllerWithIdentifier("Blue View Controller") as! BlueViewController
greenViewController.view.frame = CGRectMake(0, 0, view.bounds.width, view.bounds.height)
blueViewController = CGRectMake(0, view.bounds.height, view.bounds.width, view.bounds.height)
scrollView.addSubview(greenViewController.view)
scrollView.addSubview(blueViewController.view)
scrollView.contentSize = CGSizeMake(view.bounds.width, …Run Code Online (Sandbox Code Playgroud) 我正在尝试在UINavigationController上显示UILabel.问题是,当我将UILabel添加为UIWindow的子视图时,它不会自动旋转,因为它不是UIViewController的子视图(UIViewController在旋转期间自动处理更新子视图).
这是我使用的层次结构:
所以我想我可以使用以下层次结构:
这样,标签可以显示在UINavigationController的栏顶部,同时也自动旋转,因为它是UIViewController的子视图.
问题是当我尝试添加UINavigationController作为视图的子视图时:
[myViewController.view addSubview:myNavigationController.view];
Run Code Online (Sandbox Code Playgroud)
它会向下显示20个像素.我猜是因为它认为它需要为状态栏腾出空间.但是,由于UINavigationController被放置在UIView内部,而UIView没有覆盖在状态栏的顶部,因此错误地添加了另外20个像素.换句话说,UINavigationBar的顶部位于屏幕的40像素标记处而不是20像素处.
有没有简单的方法可以将UINavigationController及其所有元素(例如导航栏,工具栏,根视图控制器)移动20像素?或者让它知道它不应该补偿状态栏?
如果没有,我想我需要使用上面提到的第一个层次结构,并弄清楚如何旋转标签,使其与导航栏的旋转一致.我在哪里可以找到有关如何执行此操作的更多信息?
注意:通过"在导航栏顶部显示标签",我的意思是它应该叠加在导航栏的顶部...它不能简单地包裹在一个条形按钮项目中并作为其中一个项目放置导航栏.
cocoa-touch subview uiviewcontroller uiview uinavigationcontroller
好吧我想添加一个UIImageView作为子视图,然后在启动画面工作的几秒钟后删除它.我找到了三种不同的方法,但根据Objective-C和Apple,我无法理解哪种方法是最好的方法.
以下是三种不同的方法:
1)在我的MyAppDelegate.h中
@interface MyAppDelegate : NSObject <UIApplicationDelegate> {
MyViewController *myViewController;
UIImageView *myImageView;
}
@property (nonatomic, retain) IBOutlet MyViewController *myViewController;
@property (nonatomic, retain) IBOutlet UIWindow *window;
@end
Run Code Online (Sandbox Code Playgroud)
在MyAppDelegate.m中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
myImageView =[[UIImageView alloc] initWithFrame:CGRectMake(0.0,0.0,self.window.frame.size.width,self.window.frame.size.height)];
myImageView.image=[UIImage imageNamed:@"Yoga.png"];
[self.window addSubview:myImageView ];
[self.window bringSubviewToFront:myImageView];
[self performSelector:@selector(removeImage) withObject:nil afterDelay:2.5];
return YES;
}
-(void) removeImage
{
[myImageView removeFromSuperview];
[myImageView release];
[self.window addSubview:myViewController.view];
[self.window makeKeyAndVisible];
}
Run Code Online (Sandbox Code Playgroud)
2)在第二种方法中:
In my MyAppDelegate.h
@interface MyAppDelegate : NSObject <UIApplicationDelegate> {
MyViewController *myViewController;
UIImageView *myImageView;
}
@property …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,我添加了一个子视图(并根据用户交互删除相同的子视图).我正在寻找一种在任何给定时间检查子视图是否存在的方法.
例如:
在当前视图(UIView *viewA)中,我添加了一个子视图(UIView *viewB).然后我想要一种检查是否viewB在任何给定时间显示的方法.
对不起,如果不是很清楚,很难描述.
在iOS 7.1发布之前,我的应用程序没有任何崩溃.现在任何removeFromSuperview方法,崩溃.例如:我有视图控制器,当我想删除一个视图控制器时,我删除它的所有子视图,然后从堆栈中删除(堆栈:我在此存储视图控制器,用于加载新内容,并加载以前的内容):
for (UIView *subView in [contentVc subviews])
[subView removeFromSuperview];
Run Code Online (Sandbox Code Playgroud)
我得到了
- [CALayer retain]:发送到解除分配实例的消息
信息
[actual removeFromParentViewController];
Run Code Online (Sandbox Code Playgroud)
是一个删除它的好方法?它会释放整个视图控制器及其子视图吗?因为而不是removeFromSuperview,我的应用程序不会崩溃.我不明白iOS 7.1中有什么变化.
我怎样才能删除所有子视图中viewController没有removeFromSuperview,没有删除我的ViewController(如果我只是想添加新的子视图,并删除当前内容)?
更新:
有时崩溃:
[myactualviewcontroller.view removeFromSuperview];
Run Code Online (Sandbox Code Playgroud)
- [CALayer retain]:发送到解除分配实例的消息
为什么???
有时如果我尝试从视图控制器视图中删除主子视图,它会发生同样的崩溃:
[mainView removeFromSuperview] (mainView是单个UIView,添加到vc.view)
更新2 :(详细)
所以,我有一个容器视图.我正在UIViewController.view为这个容器添加一个.我正在添加一个视图作为子视图UIViewController.view.这个视图不是本地uiview,我的意思是,它声明为implementation{ UIView* mainView }.当我的UIViewController将被解除分配时,在它- (void) dealloc { [mainView removeFromSuperview]; [mainView release] [super dealloc];}
的主视图removeFromSuperview我的应用程序崩溃.
我有一个UIButton设置并像往常一样连接到我的视图控制器中的动作.只是这个本身工作正常.
现在,我已将以下内容添加到我的视图控制器中以设置单击:
- (void)viewDidLoad {
[super viewDidLoad];
UITapGestureRecognizer * singleTapGesture = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleSingleTap:)];
[self.view addGestureRecognizer:singleTapGesture];
[singleTapGesture release]; }
Run Code Online (Sandbox Code Playgroud)
现在,每次点击按钮时,它看起来都被轻敲,但它会触发手势识别器代码而不是按钮动作.
当我点击按钮时,我如何才能使按钮工作,当我点击视图中的任何其他位置时,点击手势可以正常工作?
有没有办法禁用剪辑NSView的子视图?在UIView中有一个"剪辑子视图复选框"和支持clipToBounds属性,但我无法在Cocoa中找到任何类似的东西.
这是我的场景:我有一个灰色点,你可以在屏幕上拖动:

当用户拖动点时,我想在背景中显示向上和向下箭头.向上箭头位于包含点和箭头的NSView的边界之外.

我已经四处寻找答案,我试图实现它,但没有任何工作.基本上,我需要能够观察VC视图的子视图数组中的更改.如果从该数组中删除现有视图,我希望收到有关它的通知并运行一些代码.
可能吗?
编辑 - 更多信息
我正在尝试修复一个奇怪的边缘案例错误,快速点击UISearchDisplayController(非常自定义)的UISearchBar会导致sdController(或者更确切地说是navBar效果中的托管searchBar)从视图中消失,但sdController仍然是STILL活性.这意味着navBar停留在-y原点,下面的tableView不可滚动.
我最初的想法是进入sdController处于活动状态,但UISearchDisplayControllerContainerView不在视图层次结构中.我尝试在VC的viewDidLayoutSubviews中测试它,但是当你点击搜索栏并启动sdController动画时,sdController处于活动状态,而UISearchDisplayControllerContainerView不在视图层次结构中:(.
subview ×10
ios ×5
iphone ×5
objective-c ×5
uiview ×5
bounds ×1
clip ×1
cocoa-touch ×1
ios7.1 ×1
nsview ×1
swift ×1
uibutton ×1
uiimageview ×1
uiscrollview ×1
view ×1