簡體   English   中英

NavigationBar半透明更改UITextView文本位置

[英]NavigationBar translucent changes UITextView text position

我有一個UITextView將其內容放置在錯誤的位置。 輸入文字后,文字立即變為不可見,然后不久便跳到正確的位置(幾乎正確的位置,略低於我的預期)。

在進行視圖調試時,我可以看到_UITextContainerView的位置錯誤。

奇怪的是,當我將NavigationBar外觀設置為NO時,所有工作都按預期進行,完全沒有問題。

UINavigationBar.appearance.translucent = YES;

我必須這樣設置mainView的綁定,否則它不在“ NavigationBar”下方

    if (self.navigationController.navigationBar.isTranslucent) {
        [[self view] addConstraint:[NSLayoutConstraint constraintWithItem:_mainView
                                                                attribute:NSLayoutAttributeTop
                                                                relatedBy:NSLayoutRelationEqual
                                                                   toItem:self.view
                                                                attribute:NSLayoutAttributeTop
                                                               multiplier:1.0
                                                                 constant:64]];
    } else {
        [[self view] addConstraint:[NSLayoutConstraint constraintWithItem:_mainView
                                                                attribute:NSLayoutAttributeTop
                                                                relatedBy:NSLayoutRelationEqual
                                                                   toItem:self.view
                                                                attribute:NSLayoutAttributeTop
                                                               multiplier:1.0
                                                                 constant:0]];
    }

在輸入文字之前: 在此處輸入圖片說明

輸入文本后,_UITextContainerView向下移動,您可以在“ _UITextContainerView”視圖的中間看到光標,這是一個較小的垂直形狀的矩形。 在此處輸入圖片說明

剛發現更多信息,可能與我的問題有關,我的范圍與框架不匹配。 仍然不確定如何解決此問題。 我認為這是相關的,從4到-56的距離= 60,即NavigationBar的高度。

在此處輸入圖片說明

再次提供更多信息:

我在TextField上設置了字體大小,減小字體大小后,我注意到了不同的結果,似乎是圖像。

通過將半透明設置為關閉進行了測試,所有(0、1、2、3個字符)在減小字體大小方面都是完美的。

請參閱圖像以獲取字體更改結果:

在此處輸入圖片說明

_textField = [UITextView new];
_textField.bounds = CGRectZero;
_textField.backgroundColor = [UIColor whiteColor];    
_textField.layer.cornerRadius = 16;
_textField.layer.borderWidth = 0.5;
_textField.font = [UIFont systemFontOfSize:17.0]; //<< problematic???

如果將navigationBar的半透明設置為YES,則self.view的原點位置將從屏幕的左上角開始。 如果設置為“否”,則將從欄的左下方開始。

最后,在嘗試了幾件事之后,我發現通過將該行添加到我的viewDidLoad方法中解決了該問題。

    self.automaticallyAdjustsScrollViewInsets = NO;

一個布爾值,指示視圖控制器是否應自動調整其滾動視圖插圖。 此屬性默認值為YES ,它使容器視圖控制器知道它們應該調整此視圖控制器視圖的滾動視圖插圖,以解決狀態欄,搜索欄,導航欄,工具欄或選項卡欄占用的屏幕區域。 如果您的視圖控制器實現管理其自己的滾動視圖插圖調整,則將此屬性設置為NO。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM