iphone - 覆盖 layoutSubviews 调用 [super layoutSubviews] 然后找到并重新定位按钮的 View

标签 iphone objective-c xcode cocoa-touch uinavigationbar

我正在尝试重新定位我的 UIBarButtonItem,使其边缘紧靠 UINavigationBar 的顶部和右侧。我找到了 this accepted answer关于如何做到这一点,但我真的不明白如何编码。

我首先创建了一个名为 CustomNavBar 的新类,它继承自 UINavigationBar。然后我将这个方法放在实现中:

- (void) layoutSubviews
{


}

我不明白的是答案中的部分

call [super layoutSubviews] and then find and reposition the button's view.

我该如何编码?即使是朝着正确的方向插入也会有所帮助。谢谢!

最佳答案

在调用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
        }
    }
}

关于iphone - 覆盖 layoutSubviews 调用 [super layoutSubviews] 然后找到并重新定位按钮的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8078667/

相关文章:

ios - 在 iOS 中添加 UIButtons 数组

swift - 仅当键在字典中可用时才获取数据

iphone - 开始按钮启动 NSTimer,停止按钮停止它,开始按钮再次启动它。但是 'invalidate' 给了我一个错误?

ios - 使用 resizableImageWithCapInsets 将拉伸(stretch)的 UIImage 设置为 UILabel 的背景

ios - 切换标签栏包括发送数据

iphone - 在循环中使用 NSInteger

objective-c - 适用于 iOS 和 Mac OS X 的 MacBinary 转换器

ios - 使用 Cocos2d 更新 XCode 5 的问题

iphone - APNS 只能通过命令行工作

iPhone:将文本分成框架的行