I wonder, how and when (viewDidLoad, viewWillAppear, viewDidAppear) can I get a UIViews frame size that was autoresized to fit its partent view?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
It's not clear from your question why you want it but I imagine it is to layout your sub views. Luckily Apple knew you would want to do that and implemented -(void)layoutSubViews
see this: When is layoutSubviews called?
回答2:
I tried layoutSubviews
, but it gets called more than once which is a problem when I need the auto sized frame in order to create a CGContext
to draw into.
The solution I used was to expose an init
method on my custom UIView
for its parent view controller to call in its viewWillAppear
.
I wish there was a way to accomplish this all within the custom UIView
's implementation, but it eludes me (and Google and Apple's docs and SO).
回答3:
- (void)viewDidAppear:(BOOL)animated {
CGFloat uIViewWidth = self.uIView.bounds.size.width;
CGFloat uIViewHeight = self.uIView.bounds.size.height;
CGRect uIViewSize = CGRectMake(0, 0, uIViewWidth, uIViewHeight);
}
回答4:
NSLog(@"%f; %f; %f; %f;", yourView.frame.origin.x, yourView.frame.origin.y, yourView.frame.size.width, yourView.frame.size.height);
this is how you can get frame of your view