在使用视图 iOS 滚动 uilabel 时保持标签文本与屏幕中心对齐?
Posted
技术标签:
【中文标题】在使用视图 iOS 滚动 uilabel 时保持标签文本与屏幕中心对齐?【英文标题】:keep label text aligned center to screen while scrolling uilabel with view iOS? 【发布时间】:2015-02-16 10:34:43 【问题描述】:我有一个UITableView
和其中的 10 个部分。
对于每个部分,我都有一个自定义标题。
在自定义标题中,我有一个标签作为带有文本值日期的部分标题。
表格内容大小为(450,1000)
。
这里我的带有文本的标签也在滚动,但我希望我的标签文本应该与屏幕中心对齐,并且它不应该与表格水平滚动。
提前致谢。
【问题讨论】:
将该标签添加为当前控制器视图或窗口的子视图。这样这个标签就不会随桌子移动。 Ref @pawan - 每个部分都有标签,它应该垂直滚动而不是水平滚动。当我水平滚动表格视图时,它也随之滚动。 您的表格视图可以双向滚动?这真的很不寻常。你是怎么做到的? @Douglas Hill - 我已经修改了它的内容大小,使它可以垂直和水平滚动。 我很高兴你让它做你想做的事,但请注意,表视图重置其contentSize
以匹配其自己的布局计算是合理的。
【参考方案1】:
在敲了我几个小时的头之后,我终于得到了这个解决方案。
我只是用过
(void)scrollViewDidScroll:(UIScrollView *)scrollView*
方法和改变了我的标签框架 with 表格视图内容偏移。
myLabel.frame = CGRectMake(tableview.contentoffset.x, 0, deviceHeight, 27);
它将使我的标签保持在屏幕上的相同位置,从逻辑上讲它正在改变,但看起来它在同一位置上是稳定的。
【讨论】:
【参考方案2】:这种行为仅在表格的 UITableViewStyle 属性设置为 UITableViewStylePlain 时才常见。如果您将其设置为 UITableViewStyleGrouped,标题将随着单元格向上滚动。
以下链接可能会帮助您解决问题: 1.UITableView with fixed section headers 2.https://corecocoa.wordpress.com/2011/09/17/how-to-disable-floating-header-in-uitableview/
【讨论】:
我想停止该标签的水平滚动,而不是表格或垂直滚动。【参考方案3】: - (void)addButtonsOnScrollViewHorizontal:(int)postion :(UIScrollView*)scrollView
[scrollView setShowsVerticalScrollIndicator:NO];
float x = 30;
for (int i = 1; i <=postion; i++)
UIButton *button= [UIButton buttonWithType:UIButtonTypeCustom];
[button setTag:i];
[button setTitle:[NSString stringWithFormat:@"%i",i] forState:UIControlStateNormal];
[button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor colorWithRed:26.0f/255.0f green:188.0f/255.0f blue:156.0f/255.0f alpha:100.0f] forState:UIControlStateSelected];
button.titleLabel.font =[UIFont fontWithName:@"HelveticaNeue-Bold" size:18.0f];
CGSize maxSize = CGSizeMake(button.frame.size.width, FLT_MAX);
CGRect labRect = [button.titleLabel.text boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:@NSFontAttributeName:button.titleLabel.font context:nil];
[button setFrame:CGRectMake(x, 0, labRect.size.width+10, 30)];
[button addTarget:self action:@selector(scrollViewDaysbtnClicked:) forControlEvents:UIControlEventTouchUpInside];
if (i==postion)
[_scrollViewDays setContentOffset:CGPointMake (button.frame.origin.x+button.frame.size.width/2-70, 0) animated:NO];
button.titleLabel.font =[UIFont fontWithName:@"HelveticaNeue-Bold" size:24.0f];
[button setSelected:YES];
currentSelectionDays =i;
[scrollView addSubview:button];
x +=labRect.size.width+20;
scrollView .contentSize = CGSizeMake(x, 0);
-(void)scrollViewDaysbtnClicked:(UIButton*)sender
for (UIButton *button in _scrollViewDays.subviews)
if ([button isKindOfClass:[UIButton class]])
if (button.tag == sender.tag)
[_scrollViewDays setContentOffset:CGPointMake (button.frame.origin.x+button.frame.size.width/2-70, 0) animated:NO];
button.titleLabel.font =[UIFont fontWithName:@"HelveticaNeue-Bold" size:24.0f];
[button setSelected:YES];
currentSelectionDays =(int)sender.tag;
else
[button setSelected:NO];
button.titleLabel.font =[UIFont fontWithName:@"HelveticaNeue-Bold" size:18.0f];
使用它....
【讨论】:
以上是关于在使用视图 iOS 滚动 uilabel 时保持标签文本与屏幕中心对齐?的主要内容,如果未能解决你的问题,请参考以下文章
UIScrollView 需要根据 UILabel 大小进行扩展但保持底部标签栏
是否可以在 iOS 的 2 个滚动视图之间使用“reloadData”之类的东西来保持数据的有效加载?