我在做
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/