gpt4 book ai didi

ios - 居中 UILabel subview

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

我有一个 UIImageView 作为我的表格 View 的背景 View 。当表没有数据时,我添加 UILabel 作为 ImageView 的 subview 。不过,我无法将标签居中。标签始终位于右侧。

UIImageView *backgroundImageView = [[UIImageView alloc]initWithFrame:self.tableView.frame];
backgroundImageView.image = [UIImage imageNamed:@"background"];
backgroundImageView.center = self.tableView.center;

self.noLocationsLabel = [[UILabel alloc]initWithFrame:backgroundImageView.frame];
self.noLocationsLabel.center = backgroundImageView.center;
self.noLocationsLabel.text = @"No saved locations";
self.noLocationsLabel.textAlignment = NSTextAlignmentCenter;
self.noLocationsLabel.textColor = [UIColor blackColor];
self.noLocationsLabel.font = [UIFont fontWithName:@"Chalkboard SE" size:24.0];

self.tableView.backgroundView = backgroundImageView;

if (self.locationsArray.count == 0) {
self.navigationItem.rightBarButtonItem.enabled = NO;

[self.tableView.backgroundView addSubview:self.noLocationsLabel];
self.tableView.userInteractionEnabled = NO;
}

最佳答案

如果您的图像框是 50,50,50,50,那么您的标签也将是 50,50,50,50,但由于它是 ImageView 的 subview ,它永远不会位于中心。相同的概念适用于 center。居中仅相对于 views superview。

为了使其居中,您可以像这样设置框架:

CGRect rect = CGRectMake(0,0,backgroundImageView.frame.size.width,backgroundImageView.frame.size.height);

self.noLocationsLabel = [[UILabel alloc]initWithFrame: rect];

或者甚至:

self.noLocationsLabel = [[UILabel alloc]initWithFrame: backgroundImageView.bounds];

编辑:

您可以在 subview 上使用 center。但是你必须设置正确的中心。

self.noLocationsLabel.center = CGPointMake(CGRectGetMidX(backgroundImageView.bounds),CGRectGetMidY(backgroundImageView.bounds));

Difference between frame and bounds

关于ios - 居中 UILabel subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30127622/

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