我在做

mapButton *topMapButton = [[mapButton alloc] init];
    [topMapButton setSize:CGSizeMake(70, 30)];
    topMapButton.frame = CGRectMake(0, STATUS_HEIGHT +7, 70, 30);

    UIBarButtonItem *barIcon = [[UIBarButtonItem alloc] initWithCustomView: topMapButton];
    [topMapButton addTarget:self action:@selector(openMap:) forControlEvents:UIControlEventTouchUpInside];
        self.navigationItem.rightBarButtonItem = barIcon;

其中mapButton是UIButton子类,具有预设外观,仅此而已

无论我为topMapButton设置了什么框架,它始终位于(0,0)中,而不是在rightBarButtonItem通常位置中。

请注意,以编程方式使用自动布局来设置位置可用于放置,但是当我在堆栈中推入另一个控制器时会崩溃...

我做错什么了吗?

最佳答案

看看这个answer

很快,您可以设置边缘插入。覆盖uibutton子类的alignmentRectInsets并更改顶部和左侧插图。

- (UIEdgeInsets)alignmentRectInsets {
    UIEdgeInsets insets =  UIEdgeInsetsMake(top_value, left_value, bottom_value, right_value);

    return insets;
}

关于ios - 在UIBarButtonItem中设置自定义 View 的框架,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31111068/

10-09 02:41