相关疑难解决方法(0)

iOS 11 UINavigationBar栏按钮项对齐

我正在将我的应用程序升级到iOS 11,我看到导航栏出现了一些问题,我的部分问题已在此处提出问题,所以我不会在这个问题中提及它们.

有问题的特殊问题是导航栏的条形按钮项间隔不同.我的左右主要条形按钮项目现在更接近屏幕的水平中心,我无法将它们移动到屏幕边缘附近.在过去,我使用了自定义UIButton子类并使用自定义视图创建了条形按钮项.取向溶液alignmentRectInsetscontentEdgeInsets,现在我无法管理使用这种方法来产生预期的效果.

编辑:
我已经重新测试了iOS 11 beta 2,问题仍然存在.

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

ios11

18
推荐指数
3
解决办法
2万
查看次数

如何在iOS 11中设置UIBarButton大小以匹配iOS 10中的大小

我有一个简单的视图控制器UINavigationBar具有rightBarButtonItem包含与图像资产的按钮图.

在iOS 10中,此UIBarButtonItem的大小适当,不会填满整个高度和导航栏,因此占据足够的宽度以保持与高度成比例.类似于UIBarButton项目在iOS的Apple应用程序中的外观.

现在在iOS 11中,这些图标非常庞大,并占用了比iOS 10中更多的空间.

有没有办法将它们恢复到iOS 10的外观?我尝试customView在UIBarButtonItems 的属性中添加约束无济于事.

iphone ios ios11

11
推荐指数
1
解决办法
3780
查看次数

如何使用自动布局在iOS 11中将UITextField添加到具有灵活宽度的UIToolbar

我想将UITextField添加到UITooolbar并让UITextField根据需要扩展其宽度以填充该区域,就像UIBarButtonSystemItemFlexibleSpace一样.

下面是一个关于我如何在视图控制器中正常设置工具栏项的片段...

// two UIBarButtonItems
UIBarButtonItem *left = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:nil];
UIBarButtonItem *right = [[UIBarButtonItem alloc] initWithTitle:@"Cancel" style:UIBarButtonItemStylePlain target:nil action:nil];

// the UIBarButtonItem with a UITextField as custom view
UITextField *textField = [[UITextField alloc] init];
textField.borderStyle = UITextBorderStyleRoundedRect;
UIBarButtonItem *text = [[UIBarButtonItem alloc] initWithCustomView:textField];

[self setToolbarItems:@[left, text, right]];
Run Code Online (Sandbox Code Playgroud)

......然后会出现这样的情况.

ios11_toolbar

在iOS 11之前,我对UIToolbar进行了细分,并使用layoutSubviews方法获取CGRectGetWidth(itemView.frame)所有"非灵活"项目的width(),并计算textfields视图框架的可用宽度.在iOS 11中,Apple更改为自动布局所有条形,如WWDC2017会话204中所述,现在该CGRectGetWidth(itemView.frame)方式将无法提供有效宽度,直到视图可见,这也是在iOS 11 UIBarButtonItem图像中指出的未调整尺寸.

我现在如何使用约束和自动布局添加灵活大小的UIBarButtonItems和customViews,这将扩展以填充两个项目之间的完整空闲区域?

编辑1:

如果我只添加文本字段,项目将按预期扩展其宽度.

ios11_toolbar_textfield_only

编辑2:

直接在UIToolbar中使用约束似乎是不可能的,因为项目视图不存在(直到它们被放置?)或没有超视图.

UIBarButtonItem *left = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:nil];
UIView …
Run Code Online (Sandbox Code Playgroud)

objective-c uitextfield uitoolbar nslayoutconstraint ios11

10
推荐指数
1
解决办法
1238
查看次数