首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >swift:使导航栏从右到左(rtl)与左右两项都像后面一样。

swift:使导航栏从右到左(rtl)与左右两项都像后面一样。
EN

Stack Overflow用户
提问于 2015-11-30 10:04:23
回答 1查看 4.6K关注 0票数 2

我有带有UIViewControllerUINavigationBarDelegate委托,我以编程的方式设置所有东西,我的应用程序是多语言的,所以我需要RTL (从右到左)在每个部分的支持,比如NavigationBar。我采用了这样的方法:

代码语言:javascript
复制
if MSGlobal.setting.language.direction == .L2R
{
    navigationItem.setRightBarButtonItems(rightItems, animated: true)
}
else
{
    navigationItem.setLeftBarButtonItems(rightItems, animated: true)
}
let stackCount = navigationController!.viewControllers.count
if stackCount == 1
{
    let leftBtnItem:UIBarButtonItem = UIBarButtonItem(image: UIImage(named:"drawer"), landscapeImagePhone: UIImage(named:"drawer"), style: UIBarButtonItemStyle.Plain, target: self, action: "cb_drawerTapped:")
    if MSGlobal.setting.language.direction == .L2R
    {
        navigationItem.setLeftBarButtonItem(leftBtnItem, animated: true)
    }
    else
    {
        navigationItem.setRightBarButtonItem(leftBtnItem, animated: true)
    }
}
else
{
    navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.Plain, target: self, action: "cb_back:")
}

所有的工作在LTR语言,如英语,但在RTL语言后退按钮没有显示。我的结果肯定是这样的:

代码语言:javascript
复制
LTR:   [ <      Title      [btn1...btnn]]
RTL:   [[btnn...btn1]      Title      > ]
EN

Stack Overflow用户

发布于 2019-06-20 09:33:21

如果您的目标是拥有正确的UIBarButtonItem和back操作,您可以通过Storyboard将Semantic更改为Force-Right-to-Left。或按以下代码:

Swift 5

ViewController viewDidLoad()里面

代码语言:javascript
复制
self.navigationController?.navigationBar.semanticContentAttribute = .forceRightToLeft

如果要更改导航条,导航控制器流向右向左方向,则可以使用以下命令:

代码语言:javascript
复制
override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController?.navigationBar.semanticContentAttribute = .forceRightToLeft
}

但是您应该指出,它不会改变Swipe Direction,--它只会对navigationBar产生影响,如果您想要更改Swipe Direction,则可以使用:

代码语言:javascript
复制
self.navigationController?.view.semanticContentAttribute = .forceRightToLeft

如果您想在一行中完成所有这些操作并更改整个应用程序RTL,请使用:

代码语言:javascript
复制
UIView.appearance().semanticContentAttribute = .forceRightToLeft
票数 10
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33995903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档