导航栏上的冲突,我需要添加边框的下方UIInavigationBar
,我也希望它是全球性的东西,所以我去我顶层次UIViewController
,并把那里的方法类同这一个:添加子层与过渡
- (void)setupNavigationBarBorder {
if (![self isKindOfClass:[CombinedViewController class]]) {
CGRect borderRect = CGRectMake(0, self.navigationController.navigationBar.frame.size.height-0.5f, self.navigationController.navigationBar.frame.size.width, 0.5f);
CALayer *border = [CALayer layer];
border.frame = borderRect;
border.name = @"border";
[border setBackgroundColor:[UIColor greenColor].CGColor];
[self.navigationController.navigationBar.layer addSublayer:border];
} else {
NSArray* sublayers = [NSArray arrayWithArray:self.navigationController.navigationBar.layer.sublayers];
for (CALayer *layer in sublayers) {
if ([layer.name isEqualToString:@"border"]) {
[layer removeFromSuperlayer];
}
}
}
}
这是一个简单的触发器用于绘制和删除此子图层。非常简单。所以起初我已经决定我将这个代码放在viewDidLoad
,但事实证明这不是最好的主意,因为我实际上修改了UINavigationBar
的全局状态。下一步是把这个方法调用到viewWillAppear
和大多数时候它是好的,但是当我从这个ComboFeedViewController
移动到应该有这个边界的那个......好吧,它会立即得到。
我希望在转换结束时或在最佳情况下显示转换时显示。我怎样才能做到这一点?