ios - 如何在一个 UIViewController 中处理多个 View

标签 ios cocoa-touch uiviewcontroller uikit

我有一个包含主视图的 ViewController。这个主视图包含另外两个 View ,称为 leftView 和 rightView。

我希望在应用启动时隐藏这些“辅助” View ,我认为最好的方法是偏移 X 轴。

我想通过代码来进行这种偏移以组织所有内容,但它不起作用 - 只有当我在 Interface Builder 中进行时它才有效!

我尝试了两件事,但都没有用。

1:通过 AppDelegate:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    O_GViewController *mainController = (O_GViewController *)  self.window.rootViewController;
    [mainController leftView].frame = CGRectMake(-211, 20, 211, 548);
    [mainController rightView].frame = CGRectMake(320, 20, 320, 548);

    // Override point for customization after application launch.
    return YES;
}

2:通过 View Controller :

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    //initialize secondary views
    leftView = [[UIView alloc]initWithFrame:CGRectMake(-211, 20, 211, 548)];
    rightView = [[UIView alloc]initWithFrame:CGRectMake(320, 20, 320, 548)];
}

两个“辅助” View 都与 ViewController.h 中的 *leftView 和 *rightView 绑定(bind)。

您是否知道如何通过代码来完成这项工作?

谢谢

最佳答案

在启动时隐藏这两个 View 的最简单方法是将它们的hidden 属性设置为YES。您可以在 Interface Builder 中执行此操作。

如果你真的想要将 View 放置在屏幕外,你当然可以这样做。但是如果你正在使用自动布局(你几乎可以肯定)你不能通过设置它们的框架来做到这一点,因为自动布局只会根据约束再次设置它们的框架。您必须通过操纵约束来做到这一点。

关于ios - 如何在一个 UIViewController 中处理多个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21972386/

相关文章:

ios - MQTT 通过多个 ViewController 发送消息

swift - UICollectionViewCell 仅在满足特定条件时显示

iPhone SDK : Call method from UIImageViewClass to ViewController

ios - 我在导航 Controller 层次结构中有 View Controller ,但只想要第一个 View Controller 上的导航栏 - 我该怎么做?

ios - 使用 SSZipArchive 解压缩文件而不提取文件的内容

objective-c - 将 UIDatePicker 装入 UIActionSheet

ios - 橡皮擦在 iOS 绘图中不起作用

ios - Swift - 强制用户在 UIAlertController 中输入输入(即不是空白输入)

ios - "Control Center"像滑动 View Controller

ios - 调度 UILocalNotification 导致用户界面滞后和延迟