gpt4 book ai didi

ios11 - iOS 11 UINavigationBar 栏按钮项目对齐

转载 作者:行者123 更新时间:2023-12-03 13:22:07 26 4
gpt4 key购买 nike

我正在将我的应用程序升级到 iOS 11,并且我发现导航栏存在一些问题,我的部分问题已经在这里提出了问题,所以我不会在这个问题中提及它们。

有问题的特定问题是导航栏的栏按钮项目的间距不同。我的主要左右栏按钮项目现在更靠近屏幕的水平中心,我无法将它们移动到靠近屏幕边缘的位置。过去我使用过自定义 UIButton子类并使用自定义 View 创建条形按钮项。对齐解决方案是alignmentRectInsetscontentEdgeInsets ,现在我无法使用这种方法产生预期的结果。

编辑:
我已使用 iOS 11 beta 2 重新测试,但问题仍然存在。

编辑 2:
我已经用 iOS beta 3 重新测试过,问题仍然存在。

最佳答案

现在在 iOS 11 中,您可以管理 UINavigationBarContentView 来调整左右约束,以及 UIStackView 来调整按钮(或其他元素)。

这是我的导航栏解决方案,左侧和右侧都有项目。如果您在一侧有几个按钮,它也可以修复。

- (void) updateNavigationBar {
for(UIView *view in self.navigationBar.subviews) {
if ([NSStringFromClass([view class]) containsString:@"ContentView"]) {

// Adjust left and right constraints of the content view
for(NSLayoutConstraint *ctr in view.constraints) {
if(ctr.firstAttribute == NSLayoutAttributeLeading || ctr.secondAttribute == NSLayoutAttributeLeading) {
ctr.constant = 0.f;
} else if(ctr.firstAttribute == NSLayoutAttributeTrailing || ctr.secondAttribute == NSLayoutAttributeTrailing) {
ctr.constant = 0.f;
}
}

// Adjust constraints between items in stack view
for(UIView *subview in view.subviews) {
if([subview isKindOfClass:[UIStackView class]]) {
for(NSLayoutConstraint *ctr in subview.constraints) {
if(ctr.firstAttribute == NSLayoutAttributeWidth || ctr.secondAttribute == NSLayoutAttributeWidth) {
ctr.constant = 0.f;
}
}
}
}
}
}
}

如您所见,没有必要像其他人所做的那样添加更多约束。已经定义了约束,因此可以更改它们。

关于ios11 - iOS 11 UINavigationBar 栏按钮项目对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44677018/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com