iOS11加入了大标题,很多产品开始跟进,我们产品就根据iOS 11高了一套专属UI,里面有用到大标题右侧放头像!就像App Store 游戏界面那样,大标题状态下,左侧是标题,右侧是头像!上滑后头像消失!
看了官方说明,导航栏视图布局有变化,但是大标题这个视图始终打不出来!搜索了半天!貌似苹果没有把放大标题的视图开放出来!
就是蓝色这个视图!它是在NavigationBar上!那么就可以通过筛选NavigationBar的子视图找出它来
图上看到这个视图是_UINavigationBarLargeTitleView
那么:
UIView * bigTitleView ;
for (UIView * view in self.navigationController.navigationBar.subviews ) {
NSString * className = NSStringFromClass([view class]);
if([className isEqualToString:@"_UINavigationBarLargeTitleView" ]){
bigTitleView = view;
}
}
这样就找到了大标题的容器视图
接下来就是放上头像视图了 ,并设置约束了
self.view.backgroundColor = [UIColor blueColor];
UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(0, 0, 44, 44);
btn.layer.cornerRadius = 22;
btn.clipsToBounds = YES;
btn.backgroundColor = [UIColor redColor];
if (bigTitleView) {
[bigTitleView addSubview:btn];
btn.sd_layout
.rightSpaceToView(bigTitleView, 10)
.bottomSpaceToView(bigTitleView, 5)
.widthIs(44)
.heightIs(44);
}
注意这里要用到autolayout布局,这里我用的是SDAutoLayout !用frame的话 头像会固定在右上角!不会随着用户滚动下滑或消失!
最后 其实上滑时候大标题视图并没有消失 !只是滑到了顶部小标题导航栏的下面被遮住了,苹果的UI动画给人的感觉是消失掉了!