gpt4 book ai didi

iOS 组件会自动调整大小,但我不知道在哪里以及为什么

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

我正在使用 this control (RDVCalendarView),我想对其进行一些自定义。我想改变日历的高度,这样它就不会是整个 Controller 的高度,而是小一点。因此,在 loadView 中,我将代码更改为:

CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame];
applicationFrame.size.height = 200;

_calendarView = [[RDVCalendarView alloc] initWithFrame:applicationFrame];
[_calendarView setAutoresizingMask:UIViewAutoresizingNone];
[_calendarView setSeparatorStyle:RDVCalendarViewDayCellSeparatorTypeHorizontal];
[_calendarView setBackgroundColor:[UIColor whiteColor]];
[_calendarView setDelegate:self];
self.view = _calendarView;

RDVCalendarView的整个initWithFrame方法中,我设置了正确的高度大小。但是在 viewWillAppear 之后有 layoutSubviews 调用,并且高度大小为 504。我不知道会发生什么,但看起来高度正在自动调整为 Controller 的高度。我只是不知道它可能在哪里。感谢您的帮助

最佳答案

通常您不会直接设置 UIViewController 主视图的框架,参见 https://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/AdoptingaFull-ScreenLayout/AdoptingaFull-ScreenLayout.html

相反,您只需将要调整大小的 View 作为 subview 添加到 View Controller 的 Root View 中。为此,只需将方法从 loadView 更改为 viewDidLoad。此时,系统已经为您创建了一个默认的 UIView,并将其分配给 View Controller 的 view 属性。

将您的代码更改为:

- (void)viewDidLoad {
CGRect calendarFrame = self.view.frame;
calendarFrame.size.height = 200;

_calendarView = [[RDVCalendarView alloc] initWithFrame:calendarFrame];
[_calendarView setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
[_calendarView setSeparatorStyle:RDVCalendarViewDayCellSeparatorTypeHorizontal];
[_calendarView setBackgroundColor:[UIColor whiteColor]];
[_calendarView setDelegate:self];

[self.view addSubview:_calendarView];
}

这应该可以解决问题。

关于iOS 组件会自动调整大小,但我不知道在哪里以及为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25424343/

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