gpt4 book ai didi

ios - UILabel - 设置旋转框架

转载 作者:行者123 更新时间:2023-11-29 10:58:15 25 4
gpt4 key购买 nike

知道如何在旋转时更改 UILabel 的框架。

我的问题是,当一个 UILabel 是另一个 UIView 的 subview 时,另一个 UIView 是启用分页的 scrollView 的 subview ,是否有一种智能的方式使 uilabel 旋转居中?

考虑一下:

ScrollView --> 3 x UIView (3 pages) --> 每个 UIView 都有一个 UILabel subview 。

在纵向中一切都很好,在旋转时,我必须明确设置每个标签的框架。

我试过添加:

    [myLabel setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin |  UIViewAutoresizingFlexibleRightMargin];

但这是行不通的,我只希望标签在 UIView 中居中,无论旋转如何。UIView 已经正确调整了自己的大小。

我确实尝试过使用一些类似的东西:

        [myLabel setCenter:CGPointMake(myView.frame.size.width / 2, myView.frame.size.height / 2)];

并将其放入方法中: - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

但是这并不能很好地工作,因为 UIView 会在旋转时自行调整大小。

谢谢

最佳答案

不确定 ScrollView 是否会影响我的回答。但是,如果您只想将 UILabel 居中(水平)在其父 View 中,则以下代码将起作用

-(void)viewDidLoad {
// Init the label
// Assume that you want its size to be 100 x 30
// And its superview is v0
label.frame = CGRectMake((v0.width - 100) / 2, 10, 100, 30);
label.autoresizingMask = UIViewAutoresizingMaskFlexibleLeftMargin | UIViewAutoresizingMaskFlexibleRightMargin;
[v0 addSubview:label];

// No need of handling rotation explicitly anywhere else
}

注意 v0.width 的使用:认为在 View 加载时这可能为零,但此方法仍然有效。初始值实际上并不重要。

如果您需要做一些 autoresizingMask 无法帮助的特殊事情,只需重写 layoutSubviews,它在旋转发生时被调用。最后一个解决方案是观察 View 的 frame 属性(例如,如果您没有使用 UIViewController 并且手头没有 layoutSubviews...)

关于ios - UILabel - 设置旋转框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17251827/

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