我正在尝试重新定位我的UIBarButtonItem
,使其位于UINavigationBar顶部和右侧的边缘。我找到this accepted answer如何做到这一点,但我真的不明白如何编码它。
我首先创建了一个名为CustomNavBar
的新类,它继承自UINavigationBar
。然后我将此方法放在实现中:
- (void) layoutSubviews
{
}
我不明白的是答案中的部分
call [super layoutSubviews] and then find and reposition the button's view.
我该如何编码?即使是正确方向的推动也会有所帮助。谢谢!
答案 0 :(得分:16)
在调用layoutSubviews
后找到要移动的按钮,因为每次调用layoutSubviews
时,它都会重新定位到iOS所希望的位置。
- (void) layoutSubviews
{
[super layoutSubviews];
for (UIView *view in self.subviews) { // Go through all subviews
if (view == buttonYouWant) { // Find the button you want
view.frame = CGRectOffset(view.frame, 0, -5); // Move it
}
}
}
答案 1 :(得分:3)
您可以循环浏览子视图,并使用NSClassFromString
比较当前的子视图是否是您想要的那个,例如:
-(void)layoutSubviews {
[super layoutSubviews];
for (UIView *view in self.subviews) {
if ([view isKindOfClass:NSClassFromString(@"TheClassNameYouWant")]) {
// Do whatever you want with view here
}
}
}
您还可以在for循环中使用NSLog
来查看不同的子视图。