1

UITextViewRSS フィードからテキストを動的に設定する があります。テキストビューは のサブビューですUIScrollview。最終的に、私はモバイルの新聞アプリを作成しているので、ユーザーはテキスト (およびその他のサブビュー) をスクロールできるはずです。

IBでビューを作成した後、追加しました

NSString *sourceCode = [NSString stringWithContentsOfURL:[NSURL URLWithString:self.URL] encoding:NSUTF8StringEncoding error:&error];
sourceCode = [self parseHTMLText:sourceCode];
CGSize maximumLabelSize = CGSizeMake(320,9999);
CGSize txtStringSize = [sourceCode sizeWithFont:self.body.font
                              constrainedToSize:maximumLabelSize];
CGRect newlblFrame = CGRectMake(0, 0, 320, txtStringSize.height);
self.body.frame = newlblFrame; //body is the textview
self.body.text = sourceCode;
self.scroll.contentSize=CGSizeMake(320, self.body.frame.size.height+300); //scroll is scrollview

典型的なNSLog意志表示body frame = {{0, 0}, {320, 2088}} scrollview frame = {{0, 0}, {320, 417}} scrollview content size = {320, 2388}

ただし、アプリを実行すると、ボディはインターフェイスビルダーの高さを約196に維持し、スクロールビューはスクロールしません(移動すると、元の位置に跳ね返ります)

余談ですが、CGRectMake を使用してテキストビューのフレームを手動で変更しようとすると、NSLog は正しい高さを示しますが、ビューは異なって表示されません。背景色などの他のプロパティを調整できるため、IB で正しく接続されていることを確認しました。

編集:

textview の cliptoBounds プロパティを NO に設定した後、textview は高さを調整し、テキスト全体を表示しようとします。ただし、画面の最後で途切れてしまい、スクロールできません。

これが私が現在見ているものです。便宜上、スクロールビューの背景色を灰色にしました。スクロールビューの一部が部分的に白く、部分的に灰色になっている理由がわかりません。(タイトル)は別のラベルであるところで)

ここに画像の説明を入力

4

5 に答える 5

5

コードを からviewDidLoadに移動して問題を修正しましたviewDidAppearviewDidLoadどうやらこれは Xcode 4.5 固有の問題であり、メソッド内のロジックをオーバーライドする AutoLayout 機能が原因です。より良い説明はこちらにあります。

于 2012-10-26T22:52:47.493 に答える
3

これがあなたに役立つことを願っています

self.scrollview.contentSize=CGSizeMake(320, label.frame.size.height+30);

于 2012-10-23T06:37:56.887 に答える
1

これを追加してみてください:

[_scrollView setClipsToBounds:YES];
于 2012-11-29T14:39:21.113 に答える
0

次のように解決してみてください。

// adjust the height of UITextView with content height
CGRect frame = self.body.frame;
frame.size.height = self.body.contentSize.height;
self.body.frame = frame;

// adjust UIScrollView's height with the height of UITextView
self.scroll.frame = frame;
于 2012-10-26T10:12:23.447 に答える
0

これを試して:

CGSize maximumSize = CGSizeMake(200.0, 30.0); // Specify your size. It was for my screen. 
            UIFont *txtFont = <Ur Font size & Var>;
            //new
            //fontValue = txtFont;
            //new

            lblValue.font = txtFont; 
            lblValue.lineBreakMode = UILineBreakModeWordWrap;

            CGSize txtStringSize = [commentTxt sizeWithFont:txtFont 
                                          constrainedToSize:maximumSize 
                                              lineBreakMode:lblValue.lineBreakMode];

            CGRect newlblFrame = CGRectMake(105.0, y, 200.0, txtStringSize.height);

            lblValue.frame = newlblFrame;          
            lblValue.text = @"Your String";

この設定の後、コンテンツのサイズをスクロールします。それがうまくいくことを願っています。それは私のために働いた。

于 2012-10-23T07:17:09.123 に答える