小编ksn*_*ksn的帖子

UIViewController viewDidLoad不正确的宽度/高度

大家都知道你不能相信UIViewController init/viewDidLoad方法的帧大小; 这个:

- (void)viewDidLoad: {
     NSLog(@"%d", self.view.frame.size.width);
}
Run Code Online (Sandbox Code Playgroud)

将在许多场合打印错误的尺寸(特别是它在横向模式下几乎被打破)

这实际上将返回始终更正的结果,因此布局子视图是好的:

- (void)viewWillAppear: {
     NSLog(@"%d", self.view.frame.size.width);
}
Run Code Online (Sandbox Code Playgroud)

问题是每次出现视图时都会调用viewWillAppears,因此不适合分配或添加子视图.因此,您最终会 在界面中声明每个单独的视图,并最终得到我根本不喜欢的大量头文件,因为大多数项目在初始设置后不需要再进行任何操作.

所以问题是:有没有更好的方法来处理子视图定位?

问题二是非常相关的,假设我有一个UIView的子类,包括其他各种子视图.我在我的界面中声明它,并在我的init/viewDidLoad方法中分配/初始化它.

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    ...
    menu = [[SNKSlidingMenu alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
    ...
}
Run Code Online (Sandbox Code Playgroud)

正如我们已经知道的那样,我们现在需要在viewWillAppear中重新定位它以获得更准确的读数

- (void)viewWillAppear:(BOOL)animated{
    ....
    menu.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
    ....
 }
Run Code Online (Sandbox Code Playgroud)

问题是当然所有子视图也需要重新定位.这是由自动调用的layoutSubviews函数完成的,但是我们遇到了同样的问题:所有子视图都需要在SNKSlidingMenu类的接口内声明.有没有办法解决这个问题?

谢谢.

objective-c uiview ios

10
推荐指数
3
解决办法
1万
查看次数

根据内容调整UILabel的大小

我有一个UILabel,他的文字大小有属性

title.adjustsFontSizeToFitWidth = YES;
Run Code Online (Sandbox Code Playgroud)

这阻止我使用标准方法来调整UILabel的大小.我在这里读到另一篇文章,我应该使用这个功能

sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode
Run Code Online (Sandbox Code Playgroud)

从这个答案:当-adjustsFontSizeToFitWidth设置为YES时,如何计算UILabel的字体大小?

现在,我无法弄清楚如何使它工作..这是实际的代码

UIFont *font = [UIFont fontWithName:@"Marker Felt" size:200];
UILabel *title = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, width, 20.0)];
title.text = @"this is a long title that should be resized";
title.font = font;
title.numberOfLines = 1;
title.adjustsFontSizeToFitWidth = YES;

CGFloat pointSize = 0.0;
CGSize size = [title.text sizeWithFont:font 
                           minFontSize:title.minimumFontSize 
                        actualFontSize:&pointSize 
                              forWidth:width 
                         lineBreakMode:title.lineBreakMode];
title.frame = CGRectMake(title.frame.origin.x, 
                         title.frame.origin.y, 
                         size.width, 
                         size.height);
Run Code Online (Sandbox Code Playgroud)

UILabel错误地调整了大小,好像字体大小仍然是200 ..任何线索?谢谢!

iphone uilabel uifont ios

7
推荐指数
2
解决办法
3万
查看次数

标签 统计

ios ×2

iphone ×1

objective-c ×1

uifont ×1

uilabel ×1

uiview ×1