ios - 如何为 iPhone 5 显示加载 xib

标签 ios tabs xib

我有一个使用 IB 创建的应用程序,带有一个选项卡栏和多个选项卡,其中一个选项卡 View 具有无法自动调整大小(拉伸(stretch))的背景图像。该 View 有十几个隐藏在背景后面的按钮,按钮的位置必须根据背景进行更改。

我正在考虑复制 XIB 文件并编辑 XIB 以选择 568 像素的背景图像并相应地在页面下方重新定位按钮。然后在运行时我想添加代码以在 iPhone 5 上选择 568 像素(iPhone x/5 选择不是问题)。

最后一件事,我想使用相同的 View Controller 和连接(如果可能的话),因为所有代码都是通用的。有可能这样做吗?如何创建 XIB 并使其在选项卡选择时可见。

最佳答案

您可以检查屏幕的高度,并以编程方式选择您要使用的 xib:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    MyFirstViewController *vc1 = nil;
    MySecondViewController *vc2 = nil;

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
        CGSize screenSize = [[UIScreen mainScreen] bounds].size;
        if(screenSize.height == 568) {
            vc1 = [[MyFirstViewController alloc] initWithNibName:@"LargeFirstViewController" bundle:nil];
            vc2 = [[MySecondViewController alloc] initWithNibName:@"LargeSecondViewController" bundle:nil];
        }
        if(screenSize.height == 480) {
            vc1 = [[MyFirstViewController alloc] initWithNibName:@"SmallFirstViewController" bundle:nil];
            vc2 = [[MySecondViewController alloc] initWithNibName:@"SmallSecondViewController" bundle:nil];
        }
    }
    else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        // ... Add iPad code here if relevant.
    }

    self.tabBarController = [[UITabBarController alloc] init];
    self.tabBarController.viewControllers = @[vc1, vc2];
    self.window.rootViewController = self.tabBarController;
    [self.window makeKeyAndVisible];
    return YES;
}

要以编程方式更改选项卡栏图标图像,请在 View Controller 中编辑以下内容(将“YOUR-IMAGE”替换为实际名称...不要放置扩展名(例如 .png)):

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        self.tabBarItem.image = [UIImage imageNamed:@"YOUR-IMAGE"];
    }
    return self;
}

当你创建一个新的 xib 文件时,不要忘记选择“文件所有者”(在“占位符”下)并将“自定义类”设置为属性检查器中的实际 View Controller 类。此外,在选择“文件所有者”的同时,转到“连接检查器”并将“ View ”导出拖到 xib 的顶层 View 。

关于ios - 如何为 iPhone 5 显示加载 xib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13146117/

相关文章:

iOS: iOS 开发上手动保留 Release

ios - NSThread 保留计数

ios - Swift 3 - 从另一个类中的 XIB 实例访问变量

ios - 将一些 XIB/Storyboard 字符串标记为不可本地化

ios - 使用 AVQueuePlayer 跳到上一个的更好方法?

ios - Swift 从 CKRecord 返回添加整数

reactjs - 动态 EventKey 不工作 React-Bootstrap

reactjs - 如何在 Material UI 中创建每个标签具有多个标签的自定义标签?

java - ActionBarSherlock - 整个项目中一致的选项卡 - 有没有一种简单的方法可以做到这一点?

ios - Xib 引用两个 xib 作为 View