我在Xcode的Interface Builder中将一个“Label”对象拖到我的故事板中的一个场景中。
问题是标签被“固定”在屏幕顶部,因此当我在视图控制器中向下滚动时,标签总是位于屏幕顶部。
我想要的是标签在向下滚动时消失,当我向上滚动时重新出现。我不希望Label完全滚动。我希望它的位置完全固定。
我找到了this answer,但我不认识Xcode 8.2.1中的屏幕截图。
以下是View Controller结构:
答案 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