gpt4 book ai didi

ios - 相当于 UIViewController 的 ContentInset?

转载 作者:行者123 更新时间:2023-11-29 01:33:27 25 4
gpt4 key购买 nike

我正在尝试实现一个功能,其中在我的 TabBarController 的 UITabBar 顶部会有一个永久性的横幅。为了避免破坏 viewController.view 中的内容,我想使用某种内容插图。如果 tabBarController 的所有 viewController 都是 tableView 或 scrollView,那么我可以更改它们的 contentInset,但并非所有都是。我已经尝试将 viewController.view.frame 更改为更短的高度(为 View 下方和 tabBar 上方的 44px 横幅腾出空间),但 View 不会更新。我猜它不喜欢 viewController 本身中的 44px 'void' 的想法(因为 UIView 下面没有任何东西)。

我想到了几种不同的方法:

  1. 在不改变设计的情况下以某种方式改变实际 TabBar 的高度/原点,在 tabBar 的顶部留出 44px 的额外空间,这有望更新“上方”viewController 的约束

  2. 以某种方式编辑 viewController.view 的约束以在 TabBar 和 View 底部之间留出空间。

  3. 以某种方式以编程方式更改 BottomLayoutGuide

这些有可能吗?我已经搜索过了,但没有任何运气。是否有任何其他方法可以对一般的 UIViewController 执行此操作?

澄清一下,我确实为 TabBarController 中的每个 ViewController 都有自己的类,但我想找到一种无需更改 viewController 的任何代码即可实现此目的的方法。 -> 我只想从 UITabBarController 进行此更改。 (例如(伪)self.viewControllers.view.frame.size.height -= 44;(实际上不是代码,缩短了)(不起作用))

最佳答案

我建议您使用 UIViewbounds 属性来实现这一点。我就是这样做的:

第 1 步:UIViewController 上添加一个类别,以通过传入的点向下更改 View Controller 的 View :

UIViewController.MyAddition.h

#import <Foundation/Foundation.h>

@interface UIViewController (MyAddition)

- (void)moveViewDownBy:(CGFloat)iDownPoints;

@end

UIViewController.MyAddition.m

#import "UIViewController+MyAddition.h"

@implementation UIViewController (MyAddition)


- (void)moveViewDownBy:(CGFloat)iDownPoints {
CGRect bounds = self.view.bounds;
bounds.origin.y -= iDownPoints;
bounds.size.height = -iDownPoints;
self.view.bounds = bounds;
}

@end

第 2 步:ViewControllerloadView 方法上调用此类别:

[self moveViewDownBy:<Height_Of_Your_Top_Banner>];

关于ios - 相当于 UIViewController 的 ContentInset?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33213006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com