2017-08-07 3 views
1

コンテンツを間違った位置に配置しているUITextViewがあります。テキストを入力するとすぐに、テキストは見えなくなり、その後すぐに正しい位置にジャンプします(ほぼ正しい位置、私が予想した位置よりやや低い位置)。NavigationBar半透明の変更UITextViewのテキストの位置

デバッグを表示するとき_UITextContainerViewの位置が間違っていることがわかります。

NavigationBarの外観をNOに設定すると、 はすべて正常に動作しますが、問題はありません。

私は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]]; 
    } 

下回っていない他のように設定する必要があり

UINavigationBar.appearance.translucent = YES; 

:テキストを入力した後 enter image description here

を、 _UITextContainerViewが下に移動すると、 のカーソルが "_UITextContainerView"ビューの中央に表示されます。小さな さらに長方形の長方形が表示されます。 enter image description here

はちょうど私の境界は、フレームと一致しない 、私の問題に関連している可能性がいくつかの詳細情報を、見つけました。これを修正する方法がまだわかりません。 これは、4から-56 = 60の距離、NavigationBarの高さが であると考えられます。

enter image description here

再びいくつかの詳細情報:

私は、TextFieldにフォントサイズを設定し、フォントサイズ を減少させた後、私は異なる結果に気づく、画像に見えます。

半透明をオフに設定してテストしましたが、すべての(0,1,2,3文字)はフォントサイズを小さくして完璧です。

は、フォントの変更結果の画像を参照してください:

enter image description here

_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??? 
+0

なぜあなたはsuperviewと 'toitem:self.view'として' self.view'を使っていますか?しかし 'self.view'ではなく' UITextView'スーパービューがあるようにデザインします。たぶん、この問題は制約によって生じました。 'UITextView'のスクロール可能を削除します。 (ちょうど情報のために) – user3589771

+0

mainviewはself.viewの中にあり、StoryBoardがあなたに与えるものです。私のUITextViewはスクロールしていません。 – Wayne

答えて

0

最後にいくつかのことを試した結果、この 行をviewDidLoadメソッドに追加することで問題が解決されたことがわかりました。

self.automaticallyAdjustsScrollViewInsets = NO; 

ビューコントローラがスクロールビューのインセットを自動的に調整するかどうかを示すブール値です。 このプロパティの既定値は、です。コンテナビューコントローラは、このビューコントローラのビューのスクロールビューのインセットを調整して、ステータスバー、検索バー、ナビゲーションバー、ツールバーなどで消費される画面領域を考慮する必要があることを認識できます。またはタブバー。ビューコントローラ実装が独自のスクロールビューのインセット調整を管理する場合は、このプロパティをNOに設定します。

0

あなたがYESにnavigationBarの半透明を設定した場合、self.viewの原点位置が画面の左上の点からスタートします。 NOに設定すると、バーの左下から開始します。

+0

ありがとう、情報のため。そのため、私は半透明がオンであるかどうかに応じて、異なる制約があります。まだ私のUITextビューがそれがどう変わっているのかは分かりません。 – Wayne

関連する問題