如何使UILabel位置固定?

时间:2018-04-19 18:49:19

标签: ios swift position uilabel

我在Xcode的Interface Builder中将一个“Label”对象拖到我的故事板中的一个场景中。

问题是标签被“固定”在屏幕顶部,因此当我在视图控制器中向下滚动时,标签总是位于屏幕顶部。

我想要的是标签在向下滚动时消失,当我向上滚动时重新出现。我不希望Label完全滚动。我希望它的位置完全固定。

我找到了this answer,但我不认识Xcode 8.2.1中的屏幕截图。

以下是View Controller结构:

image

2 个答案:

答案 0 :(得分:1)

试试这个:

@interface ViewController () <UIScrollViewDelegate>

@property (nonatomic, weak) IBOutlet UILabel *fadingLabel;

@end

@implementation ViewController

#pragma mark - UIScrollViewDelegate

/* For this method to get called, make sure you set the delegate of your table view to this view controller.*/

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (!self.fadingLabel)
        return;

    CGFloat labelHeight = CGRectGetHeight(self.fadingLabel.frame);
    CGFloat alpha = 1.0f - (scrollView.contentOffset.y / labelHeight);
    [self.fadingLabel setAlpha:alpha];
}

@end

这是快速翻译:

class ViewController: UIViewController, UIScrollViewDelegate {
    private weak var fadingLabel: UILabel?

    // MARK: - UIScrollViewDelegate

    /* For this method to get called, make sure you set the delegate of your table view to this view controller.*/
    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        guard let label = self.fadingLabel else {
            return
        }

        let labelHeight: CGFloat = label.frame.height
        let alpha: CGFloat = 1.0 - (scrollView.contentOffset.y / labelHeight)
        label.alpha = alpha
    }
}

答案 1 :(得分:0)

您应该实施UIScrollViewDelegate并根据scrollViewDidScroll(_:)中滚动视图的垂直内容偏移量隐藏/显示标签。

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    label.isHidden = scrollView.contentOffset.y > 50
}

不要忘记设置滚动视图的代理:

scrollView.delegate = self