使用KVO更新浮動視圖的幀。
這裏是用Objective-C的代碼示例:
// ScrollView.m
// ScrollView is a subclass of UIScrollView
@interface ScrollView()
@property (nonatomic, strong) UIView *floatingView;
@property (nonatomic) CGRect originalBorderFrame;
@property (nonatomic) CGFloat anchorHeight;
@end
@implementation ScrollView
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self.floatingView = [UIView new];
self.floatingView.backgroundColor = [UIColor colorWithRed:0.8211 green:0.5 blue:0.5 alpha:1.0];
self.floatingView.frame = CGRectMake(0, 150, frame.size.width, 20);
self.originalBorderFrame = self.floatingView.frame;
[self addSubview:self.floatingView];
self.anchorHeight = 44;
[self addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:nil];
}
return self;
}
- (void)dealloc {
[self removeObserver:self forKeyPath:@"contentOffset"];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
if ([keyPath isEqualToString:@"contentOffset"]) {
if (self.contentOffset.y > self.originalBorderFrame.origin.y-self.anchorHeight) {
self.floatingView.frame = CGRectOffset(self.originalBorderFrame, 0, self.contentOffset.y - (self.originalBorderFrame.origin.y-self.anchorHeight));
}
}
}
@end
這裏是捕捉:
這是一個主要基於觀點的**問題,請報告關於您問題的更多詳細信息。 –
我以前也見過它,我的經驗是使用自動佈局似乎不太好,有時它有一些延遲動畫,而我使用KVO,它會好得多。順便說一句,使用表格視圖更容易,正如你所說的 – childrenOurFuture
你說的_「我不需要頁面的tableview」_,但從技術上說,你已經排除了使用浮動部分標題的明顯解決方案,並且沒有顯示任何努力爲了提供任何其他解決方案,您只需在這裏放下一個要求,以便通過__someone__ else和__somehow__來解決您的問題 - 但這不是如何在此提出問題的方式。 – holex