在使用视图 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 时保持标签文本与屏幕中心对齐?的主要内容,如果未能解决你的问题,请参考以下文章

自动布局动画保持 UILabel 居中

UIScrollView 需要根据 UILabel 大小进行扩展但保持底部标签栏

是否可以在 iOS 的 2 个滚动视图之间使用“reloadData”之类的东西来保持数据的有效加载?

如何让滚动视图子视图响应滚动

如何在滚动视图中使 UIImage 低于 UILabel 或 UITextView

滚动ios时数字增量动画