PyQuery find() in pandas - pandas

I have a pandas dataframe with multiple columns. I am working on a specific column named "Text_annotated" whose structure is like :
Text_annotated
<html> Lorem ipsum dolor sit amet, <phrase>consectetur adipiscing elit</phrase>, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. <phrase>Ut enim ad minim veniam</phrase>, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</html>
<html> Faucibus vitae aliquet nec ullamcorper sit amet risus nullam. Pellentesque sit amet porttitor eget dolor morbi. <phrase>Tincidunt praesent semper feugiat nibh sed pulvinar. Lobortis elementum nibh tellus molestie nunc non blandit.</phrase> Tellus at urna condimentum mattis.</html>
<html>Pulvinar etiam non quam lacus. Amet purus gravida quis blandit. Scelerisque eu ultrices vitae auctor eu augue ut. Tincidunt lobortis feugiat vivamus at augue eget arcu dictum varius. Pellentesque adipiscing commodo elit at imperdiet.</html>
and I want to extract only the text between the <phrase></phrase> tags. For this reason, I decided to use PyQuery. So far I have tried
text_phrases= df['Text_annotated'].tolist()
doc = pq(f"{text_phrases}")
phrase_macro = doc.find("phrase").text()
which returns a pyquery.pyquery.PyQuery where each "newline" contains only one result e.g.
consectetur adipiscing elit
Ut enim ad minim veniam
Tincidunt praesent semper feugiat nibh sed pulvinar. Lobortis elementum nibh tellus molestie nunc non blandit.
Thus, my question is whether it's possible to group the results for each row in the df separated by a comma e.g.
consectetur adipiscing elit, Ut enim ad minim veniam
Tincidunt praesent semper feugiat nibh sed pulvinar. Lobortis elementum nibh tellus molestie nunc non blandit.
(I have also tried to iterate over the objects phrases_res = [h.text() for h in doc('phrase').items()] which didn't work)
Any help/suggestion is much appreciated.
PS. Each row is just wrapped with a <html> tag, without any other particular structure.
EDIT: Tried also to "separate" somehow according to the html tag, but returned the previous result.
rows = doc('html')
for row in rows.text():
phrase_res = doc.find("phrase").text()
new_df['Phrases_res'] = phrase_res
new_df.head(5)

You can use pandas.Series.str.findall with a regex expression to return a list of all the strings between two delimiters.
Try this :
import pandas as pd
pd.options.display.max_colwidth = None
data = ['<html> Lorem ipsum dolor sit amet, <phrase>consectetur adipiscing elit</phrase>, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. <phrase>Ut enim ad minim veniam</phrase>, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</html>',
'<html> Faucibus vitae aliquet nec ullamcorper sit amet risus nullam. Pellentesque sit amet porttitor eget dolor morbi. <phrase>Tincidunt praesent semper feugiat nibh sed pulvinar. Lobortis elementum nibh tellus molestie nunc non blandit.</phrase> Tellus at urna condimentum mattis.</html>',
'<html>Pulvinar etiam non quam lacus. Amet purus gravida quis blandit. Scelerisque eu ultrices vitae auctor eu augue ut. Tincidunt lobortis feugiat vivamus at augue eget arcu dictum varius. Pellentesque adipiscing commodo elit at imperdiet.</html>']
df = pd.DataFrame(data, columns=['Text_annotated'])
df['Phrases'] = df['Text_annotated'].str.findall(r"<phrase>(.*?)</phrase>")
>>> display(df)

Related

kableExtra float options (float-left or float-right) for format "latex" not working in Rmarkdown

Float options are not working for "latex" format pdf renders.
MWE:
---
title: ""
author: "Jono3030"
output:
html_document: default
pdf_document:
keep_tex: no
---
```{r echo=F, message=F, warning=F}
library(dplyr)
library(knitr)
library(kableExtra)
```
```{r, echo=FALSE}
out_type <- knitr::opts_knit$get("rmarkdown.pandoc.to")
```
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vulputate urna in eleifend commodo. Praesent et tristique ligula, eget pretium eros. Ut congue leo nibh, a volutpat erat efficitur sed. Aliquam rhoncus mollis diam nec bibendum. Suspendisse eget massa a dui elementum tempus. Maecenas a lacus a odio bibendum eleifend sed ac mauris. Nunc molestie dui dignissim, egestas elit quis, suscipit erat. Donec id suscipit lectus, nec mollis nisl. Quisque ultrices quis eros in hendrerit. Etiam enim metus, vestibulum nec congue vitae, tempus eu ex. Ut vehicula elementum orci, vitae viverra mi tristique ac.
```{r demotable, results='asis', echo=F, message=F, warning=F}
latex_table <- tibble(col1=c(runif(9, 1, 99)), col2=c(runif(9, 1, 99))) %>%
kable(format="latex",
booktabs = T,
linesep = '',
caption = "MRE") %>%
kable_styling(full_width = F, position = "float_right")
html_table <- tibble(col1=c(runif(9, 1, 99)), col2=c(runif(9, 1, 99))) %>%
kable(format="html",
caption = "MRE") %>%
kable_styling(full_width = F, position = "float_right")
switch(out_type,
html = html_table,
latex = latex_table
)
```
Sed in efficitur mauris. Donec vulputate non leo eget commodo. Vivamus luctus arcu at lorem pulvinar condimentum. Nullam felis risus, mattis vel accumsan vehicula, ullamcorper in risus. Nullam ullamcorper dignissim massa, ac tristique nibh fringilla in. Proin tortor est, ornare sit amet magna non, eleifend feugiat sapien. Fusce quis augue quis lectus dignissim consequat vel et dui. Aliquam dui eros, cursus a mauris id, volutpat blandit tellus. Nunc porta tincidunt rhoncus. Donec fermentum sem et justo ultricies, ut ullamcorper quam vehicula. Aenean commodo velit rhoncus nibh tristique, at sollicitudin nibh ultricies. Curabitur odio enim, fringilla id neque a, pharetra lobortis urna. Curabitur suscipit quam vitae libero vestibulum, vel ornare arcu pharetra. Sed sagittis mauris faucibus arcu tincidunt elementum. In sodales tincidunt iaculis.
Cras a eleifend sapien, a eleifend nulla. Donec ultrices molestie nibh sed facilisis. Aliquam eu hendrerit justo. Nullam ac dictum dui. Nullam ac lectus ut nisl consequat ornare. Sed accumsan rutrum varius. Nam nec felis id elit viverra consequat et non lorem.
Pellentesque eget blandit lorem. Curabitur at ultricies leo, sed porttitor erat. Vivamus fringilla erat a arcu scelerisque vestibulum. Maecenas non mollis lectus. Aenean a ipsum sem. Aenean nec hendrerit lacus, at ornare neque. Phasellus id nisi non risus faucibus condimentum.
Nulla a nulla a nulla dapibus scelerisque. Pellentesque molestie leo id porta tincidunt. Ut venenatis interdum egestas. Ut id maximus libero, ut iaculis lacus. Praesent sit amet bibendum lacus. Donec venenatis at mauris sit amet mollis. Donec eleifend nibh mauris, in euismod nisi hendrerit a. Cras porttitor rhoncus diam eget rutrum. Phasellus condimentum maximus felis sit amet fermentum. Aenean lacinia ornare dolor, sit amet finibus magna tempor sed.
The MWE results in this:
I'm wondering if someone can reproduce this issue since I haven't found anything on it on stackoverflow or anywhere else.
There are no issues when using the "html" format:
Am I missing something here? Is the float option only available for the "html" format?
Edit: sessionInfo() as requested by #J_F
R version 3.6.3 (2020-02-29)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Debian GNU/Linux 9 (stretch)
Matrix products: default
BLAS: /usr/lib/libblas/libblas.so.3.7.0
LAPACK: /usr/lib/lapack/liblapack.so.3.7.0
locale:
[1] LC_CTYPE=en_CA.UTF-8 LC_NUMERIC=C LC_TIME=en_CA.UTF-8 LC_COLLATE=en_CA.UTF-8
[5] LC_MONETARY=en_CA.UTF-8 LC_MESSAGES=en_CA.UTF-8 LC_PAPER=en_CA.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=en_CA.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] kableExtra_1.1.0 knitr_1.24 dplyr_0.8.3 nvimcom_0.9-82
loaded via a namespace (and not attached):
[1] Rcpp_1.0.2 rstudioapi_0.10 xml2_1.2.2 magrittr_1.5 hms_0.5.0 munsell_0.5.0
[7] tidyselect_0.2.5 rvest_0.3.4 viridisLite_0.3.0 colorspace_1.4-1 R6_2.4.0 rlang_0.4.0
[13] stringr_1.4.0 httr_1.4.1 tools_3.6.3 webshot_0.5.1 xfun_0.8 htmltools_0.3.6
[19] assertthat_0.2.1 digest_0.6.20 tibble_2.1.3 crayon_1.3.4 purrr_0.3.2 readr_1.3.1
[25] vctrs_0.2.0 zeallot_0.1.0 glue_1.3.1.9000 evaluate_0.14 rmarkdown_1.14 stringi_1.4.3
[31] compiler_3.6.3 pillar_1.4.2 scales_1.0.0 backports_1.1.4 pkgconfig_2.0.2
Right here: How to I keep a kable caption with a floating table? user #bttomio suggests a solution based on this thread: https://github.com/haozhu233/kableExtra/issues/221#issuecomment-400473530
Once added proper libraries (I've also modified first R chunk!), in your case the implementation of this solution could look like that:
---
title: "Test"
author: "gnypit"
output: pdf_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
options(tinytex.verbose = TRUE)
library(knitr)
library(kableExtra)
library(tibble)
library(xtable)
```
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed vulputate urna in
eleifend commodo. Praesent et tristique ligula, eget pretium eros. Ut congue leo nibh,
a volutpat erat efficitur sed. Aliquam rhoncus mollis diam nec bibendum. Suspendisse
eget massa a dui elementum tempus. Maecenas a lacus a odio bibendum eleifend sed ac
mauris. Nunc molestie dui dignissim, egestas elit quis, suscipit erat. Donec id
suscipit lectus, nec mollis nisl. Quisque ultrices quis eros in hendrerit. Etiam enim
metus, vestibulum nec congue vitae, tempus eu ex. Ut vehicula elementum orci, vitae
viverra mi tristique ac.
```{r, echo=FALSE}
xtable2kable <- function(x)
{
out <- capture.output(print(x, table.placement = NULL))[-(1:2)]
out <- paste(out, collapse = "\n")
structure(out, format = "latex", booktabs = T, linesep = '', class = "knitr_kable")
}
data <- tibble(col1=c(runif(9, 1, 99)), col2=c(runif(9, 1, 99)))
xtable(data, caption = "MRE") %>%
xtable2kable() %>%
kable_styling(position = "float_right")
```
Sed in efficitur mauris. Donec vulputate non leo eget commodo. Vivamus luctus arcu at
lorem pulvinar condimentum. Nullam felis risus, mattis vel accumsan vehicula,
ullamcorper in risus. Nullam ullamcorper dignissim massa, ac tristique nibh fringilla
in. Proin tortor est, ornare sit amet magna non, eleifend feugiat sapien. Fusce quis
augue quis lectus dignissim consequat vel et dui. Aliquam dui eros, cursus a mauris
id, volutpat blandit tellus. Nunc porta tincidunt rhoncus. Donec fermentum sem et
justo ultricies, ut ullamcorper quam vehicula. Aenean commodo velit rhoncus nibh
tristique, at sollicitudin nibh ultricies. Curabitur odio enim, fringilla id neque a,
pharetra lobortis urna. Curabitur suscipit quam vitae libero vestibulum, vel ornare
arcu pharetra. Sed sagittis mauris faucibus arcu tincidunt elementum. In sodales
tincidunt iaculis.
Cras a eleifend sapien, a eleifend nulla. Donec ultrices molestie nibh sed facilisis.
Aliquam eu hendrerit justo. Nullam ac dictum dui. Nullam ac lectus ut nisl consequat
ornare. Sed accumsan rutrum varius. Nam nec felis id elit viverra consequat et non
lorem.
Pellentesque eget blandit lorem. Curabitur at ultricies leo, sed porttitor erat.
Vivamus fringilla erat a arcu scelerisque vestibulum. Maecenas non mollis lectus.
Aenean a ipsum sem. Aenean nec hendrerit lacus, at ornare neque. Phasellus id nisi non
risus faucibus condimentum.
Nulla a nulla a nulla dapibus scelerisque. Pellentesque molestie leo id porta
tincidunt. Ut venenatis interdum egestas. Ut id maximus libero, ut iaculis lacus.
Praesent sit amet bibendum lacus. Donec venenatis at mauris sit amet mollis. Donec
eleifend nibh mauris, in euismod nisi hendrerit a. Cras porttitor rhoncus diam eget
rutrum. Phasellus condimentum maximus felis sit amet fermentum. Aenean lacinia ornare
dolor, sit amet finibus magna tempor sed.

groff putting single word on line after trap

I have a groff document, however, when I set the trap to create a footer, groff puts one word after the specified height, then executes the macro for the trap. I am compilinig the document with groff -Tpdf -P-pletter ex.groff > ex.pdf.
ex.groff:
.de foot
. bp
..
.wh -1i foot
.ls 2
.nh
.ad l
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
In pulvinar, ex id ultricies tincidunt, ligula neque hendrerit velit, id feugiat enim nisl eu justo.
In bibendum elementum auctor.
Fusce dapibus sed nulla in malesuada.
Ut vehicula ultrices nibh, at iaculis est consectetur vitae.
Phasellus condimentum est in elit ultrices mattis.
Mauris orci sem, dictum eleifend augue vitae, fermentum convallis nunc.
In semper vitae nunc a congue.
Pellentesque pretium risus vitae turpis mollis, a blandit lacus vestibulum.
Vivamus congue urna mauris, ac viverra ipsum tristique id.
Maecenas mauris massa, ullamcorper eu fringilla consequat, molestie ac nunc.
Etiam luctus tortor id odio fringilla, eu eleifend leo imperdiet.
.br
Integer venenatis et mi dignissim dictum.
Duis rutrum tortor lectus, eget pulvinar risus viverra id.
Vivamus vel vestibulum neque, in posuere libero.
Praesent eu erat ut ligula consequat consectetur sed nec magna.
Pellentesque vitae rhoncus felis.
Suspendisse potenti.
Nullam in sodales nisi.
Nulla vitae tempus sem, non laoreet felis.
.br
Fusce velit metus, condimentum non ultricies facilisis, dignissim eu diam.
Donec lorem ante, pulvinar et congue non, iaculis ac leo.
Nam sit amet risus dui.
Mauris lorem nunc, facilisis non odio dapibus, gravida posuere leo.
Quisque pellentesque tincidunt dolor sed eleifend.
Nam eget augue feugiat, tincidunt orci et, tempor quam.
Suspendisse purus mi, mollis quis porta quis, tincidunt vel odio.
Pellentesque nisl sapien, posuere sed accumsan eget, elementum vel est.
Maecenas cursus neque quis arcu varius, at efficitur dui dictum.
.br
Etiam semper ultrices ipsum, eget gravida risus condimentum vel.
Suspendisse sed tincidunt lectus.
Suspendisse faucibus gravida lorem, vel volutpat eros hendrerit nec.
Vestibulum ac leo eget metus sollicitudin rhoncus.
Fusce venenatis ligula a sodales varius.
Etiam mauris nisi, ultricies eu ex quis, vehicula facilisis nulla.
Pellentesque eu arcu nec urna tempor fringilla.
Sed consectetur, leo at convallis finibus, nunc mi feugiat dolor, a tincidunt tortor ipsum vitae sem.
Vestibulum tincidunt, nisl vel hendrerit consequat, leo felis rutrum tellus, quis tempor odio leo in lectus.
Donec placerat tempor turpis nec efficitur.
Donec quis erat a augue tempor lacinia sit amet ac felis.
Donec a dui ut diam tempus cursus.
Sed auctor, lorem sed interdum blandit, erat dui tristique dolor, vitae condimentum lorem dui ac augue.
.br
Phasellus et dignissim lacus.
Vestibulum a dolor sodales est bibendum sodales.
Nulla gravida erat lacus, in placerat sapien consequat id.
Donec vitae pulvinar neque.
Etiam a semper augue.
Phasellus sed justo id velit imperdiet finibus.
Nam eget vulputate orci, ac congue nunc.
Pellentesque sollicitudin, nulla quis luctus pulvinar, velit ex feugiat leo, sed euismod ante odio at est.
Duis velit sapien, ornare vel vulputate in, consectetur non neque.
Curabitur non libero at magna venenatis cursus et vel urna.
.br
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
In pulvinar, ex id ultricies tincidunt, ligula neque hendrerit velit, id feugiat enim nisl eu justo.
In bibendum elementum auctor.
Fusce dapibus sed nulla in malesuada.
Ut vehicula ultrices nibh, at iaculis est consectetur vitae.
Phasellus condimentum est in elit ultrices mattis.
Mauris orci sem, dictum eleifend augue vitae, fermentum convallis nunc.
In semper vitae nunc a congue.
Pellentesque pretium risus vitae turpis mollis, a blandit lacus vestibulum.
Vivamus congue urna mauris, ac viverra ipsum tristique id.
Maecenas mauris massa, ullamcorper eu fringilla consequat, molestie ac nunc.
Etiam luctus tortor id odio fringilla, eu eleifend leo imperdiet.
which produces the undesired word right after the trap height (the word on the final line should be on the next page)
How can I make it so this word appears on the next page, instead of right where the trap should be?
I dont have the reference to hand, but from my notes, in the table listing the basic troff commands we have
.bp +-N N=1 Bbv new page. number of next page
where Bbv are a set of flags including this: b will cause line break unless use ' instead of . so the answer is to define your macro to call 'bp instead of .bp.
.de foot
' bp
..
The online groff doc briefly says about requests:
A request line begins with a control character, which is either a
single quote (', the no-break control character) or a period (., the normal control character).
and for bp has an example using 'bp.

Is is possible to load more testdata with liquibase

I want to load a whole html file as testdata with liquibase. So far I've used the approach with loading testdata from csv file, but it is not designed to handle huge html's.
Is there a way to achieve it?
Here is an example to make it clear:
I have a table named Movie. The fields are: id, title, description. In a databaseChangeLog section I point to a file where I store the testdata:
<loadData encoding="UTF-8"
file="config/liquibase/testdata/movie.csv"
separator=";"
tableName="movie"/>
The content is as follows:
id;title;description
1;Titanic;great movie
2;Forrest Gump;another great movie
Now I want to change the description to something that is closer to the real usecase. Lets say this HTML:
<div id="lipsum">
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce porta pulvinar lacus eget egestas. Ut quis efficitur turpis. Nunc tincidunt turpis lorem, eget vestibulum nisi sodales at. Quisque in tortor et sapien ornare venenatis. Integer pulvinar nec ipsum malesuada porta. Sed massa metus, condimentum non varius ornare, sollicitudin at dui. Praesent porta, ante et interdum convallis, tellus augue tempus nisl, sit amet mollis augue nisl vel metus.
</p>
<p>
Nam quis libero rhoncus, facilisis magna ut, bibendum urna. Nullam sit amet volutpat turpis. Praesent eget aliquet orci. Duis dignissim tellus erat, eget fermentum augue dapibus sed. Quisque vitae est ipsum. Quisque sit amet libero eget nisi faucibus maximus vel a sem. Proin maximus neque arcu, sit amet eleifend dolor ornare at. Suspendisse laoreet lobortis tellus sed consequat. Nunc commodo ligula eget neque porta consectetur. Mauris sagittis elit in sodales luctus.
</p>
</div>
The content won't fit into the csv file. I could delete all the newlines, but it makes the file unmaintainable.
loadData has a column attribute which in turn has a valueClobFile attribute where you could put in a path to a (html) file.
Checkout these two files in the liquibase integration tests that show a use of this:
batchInsert.changelog.xml
batchInsert.csv

PHPStorm: reformat long comments

How do I reformat long (doc) comments in my code? Hitting "reformat" doesn't work. For example when I have this in my code:
/**
* Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin porta ac urna quis sagittis. Nam risus leo, ultricies
* id ante sed, bibendum rutrum diam.
* Suspendisse viverra dui et ligula aliquet, sit amet mattis magna consequat. Morbi venenatis tempus mattis.
* Praesent mollis quam non turpis laoreet placerat.
*/
How do I turn it into this?
/**
* Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin porta ac urna quis sagittis. Nam risus leo, ultricies
* id ante sed, bibendum rutrum diam. Suspendisse viverra dui et ligula aliquet, sit amet mattis magna consequat. Morbi
* venenatis tempus mattis. Praesent mollis quam non turpis laoreet placerat.
*/
Such functionality is not currently available in PhpStorm.
But you may try Wrap to Column plugin -- it may do OK for you (seems to work -- based on very quick test).
Related tickets:
http://youtrack.jetbrains.com/issue/WI-374
http://youtrack.jetbrains.com/issue/WI-3713
http://youtrack.jetbrains.com/issue/WI-13469
http://youtrack.jetbrains.com/issue/WI-18264

Cut text and put in another UITextView

I need a help
I have this:
NSString *txt1 = #"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ac elit in est volutpat laoreet. Sed in turpis id odio molestie commodo et et felis. Praesent at magna mauris, at rutrum lacus. Fusce eu dictum erat. Etiam tellus quam, aliquam a imperdiet non, tempor nec est. Proin quis est lectus. Sed facilisis mauris scelerisque erat auctor ut tempor tellus consectetur. In sed erat non massa tincidunt consectetur. Proin vitae sollicitudin dolor. Morbi euismod hendrerit lorem vitae facilisis. Curabitur suscipit odio in felis eleifend non porttitor dui auctor. Aenean sed libero mauris, vel sagittis neque. Mauris lobortis posuere sapien eget tempus. Sed scelerisque viverra scelerisque. Proin pharetra, tortor in adipiscing egestas, ante massa ultrices tellus, vitae molestie enim ante id diam. Aenean auctor mi a massa aliquet et facilisis nisi dignissim. Proin mauris turpis, fringilla et viverra ut, porta ac massa. Nulla adipiscing tincidunt metus, eget faucibus enim luctus interdum. Suspendisse tortor nibh, elementum ut dictum ac, ultricies quis nulla. Donec dictum, felis ac fermentum facilisis, augue dui mattis orci, ac feugiat mauris ante sit amet ligula. Nullam in dolor velit, non consectetur nisl. Nunc nec risus ante. Maecenas sapien dolor, faucibus a condimentum nec, luctus ut nulla. Donec feugiat ullamcorper risus. Quisque consequat pharetra velit, nec venenatis nibh pretium vitae. Mauris tempor tincidunt sagittis.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ac elit in est volutpat laoreet. Sed in turpis id odio molestie commodo et et felis. Praesent at magna mauris, at rutrum lacus. Fusce eu dictum erat. Etiam tellus quam, aliquam a imperdiet non, tempor nec est. Proin quis est lectus. Sed facilisis mauris scelerisque erat auctor ut tempor tellus consectetur. In sed erat non massa tincidunt consectetur. Proin vitae sollicitudin dolor. Morbi euismod hendrerit lorem vitae facilisis. Curabitur suscipit odio in felis eleifend non porttitor dui auctor. Aenean sed libero mauris, vel sagittis neque. Mauris lobortis posuere sapien eget tempus. Sed scelerisque viverra scelerisque. Proin pharetra, tortor in adipiscing egestas, ante massa ultrices tellus, vitae molestie enim ante id diam. Aenean auctor mi a massa aliquet et facilisis nisi dignissim. Proin mauris turpis, fringilla et viverra ut, porta ac massa. Nulla adipiscing tincidunt metus, eget faucibus enim luctus interdum. Suspendisse tortor nibh, elementum ut dictum ac, ultricies quis nulla. Donec dictum, felis ac fermentum facilisis, augue dui mattis orci, ac feugiat mauris ante sit amet ligula. Nullam in dolor velit, non consectetur nisl. Nunc nec risus ante. Maecenas sapien dolor, faucibus a condimentum nec, luctus ut nulla. Donec feugiat ullamcorper risus. Quisque consequat pharetra velit, nec venenatis nibh pretium vitae. Mauris tempor tincidunt sagittis.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ac elit in est volutpat laoreet. Sed in turpis id odio molestie commodo et et felis. Praesent at magna mauris, at rutrum lacus. Fusce eu dictum erat. Etiam tellus quam, aliquam a imperdiet non, tempor nec est. Proin quis est lectus. Sed facilisis mauris scelerisque erat auctor ut tempor tellus consectetur. In sed erat non massa tincidunt consectetur. Proin vitae sollicitudin dolor. Morbi euismod hendrerit lorem vitae facilisis. Curabitur suscipit odio in felis eleifend non porttitor dui auctor. Aenean sed libero mauris, vel sagittis neque. Mauris lobortis posuere sapien eget tempus. Sed scelerisque viverra scelerisque. Proin pharetra, tortor in adipiscing egestas, ante massa ultrices tellus, vitae molestie enim ante id diam. Aenean auctor mi a massa aliquet et facilisis nisi dignissim. Proin mauris turpis, fringilla et viverra ut, porta ac massa. Nulla adipiscing tincidunt metus, eget faucibus enim luctus interdum. Suspendisse tortor nibh, elementum ut dictum ac, ultricies quis nulla. Donec dictum, felis ac fermentum facilisis, augue dui mattis orci, ac feugiat mauris ante sit amet ligula. Nullam in dolor velit, non consectetur nisl. Nunc nec risus ante. Maecenas sapien dolor, faucibus a condimentum nec, luctus ut nulla. Donec feugiat ullamcorper risus. Quisque consequat pharetra velit, nec venenatis nibh pretium vitae. Mauris tempor tincidunt sagittis.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ac elit in est volutpat laoreet. Sed in turpis id odio molestie commodo et et felis. Praesent at magna mauris, at rutrum lacus. Fusce eu dictum erat. Etiam tellus quam, aliquam a imperdiet non, tempor nec est. Proin quis est lectus. Sed facilisis mauris scelerisque erat auctor ut tempor tellus consectetur. In sed erat non massa tincidunt consectetur. Proin vitae sollicitudin dolor. Morbi euismod hendrerit lorem vitae facilisis. Curabitur suscipit odio in felis eleifend non porttitor dui auctor. Aenean sed libero mauris, vel sagittis neque. Mauris lobortis posuere sapien eget tempus. Sed scelerisque viverra scelerisque. Proin pharetra, tortor in adipiscing egestas, ante massa ultrices tellus, vitae molestie enim ante id diam. Aenean auctor mi a massa aliquet et facilisis nisi dignissim. Proin mauris turpis, fringilla et viverra ut, porta ac massa. Nulla adipiscing tincidunt metus, eget faucibus enim luctus interdum. Suspendisse tortor nibh, elementum ut dictum ac, ultricies quis nulla. Donec dictum, felis ac fermentum facilisis, augue dui mattis orci, ac feugiat mauris ante sit amet ligula. Nullam in dolor velit, non consectetur nisl. Nunc nec risus ante. Maecenas sapien dolor, faucibus a condimentum nec, luctus ut nulla. Donec feugiat ullamcorper risus. Quisque consequat pharetra velit, nec venenatis nibh pretium vitae. Mauris tempor tincidunt sagittis.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ac elit in est volutpat laoreet. Sed in turpis id odio molestie commodo et et felis. Praesent at magna mauris, at rutrum lacus. Fusce eu dictum erat. Etiam tellus quam, aliquam a imperdiet non, tempor nec est. Proin quis est lectus. Sed facilisis mauris scelerisque erat auctor ut tempor tellus consectetur. In sed erat non massa tincidunt consectetur. Proin vitae sollicitudin dolor. Morbi euismod hendrerit lorem vitae facilisis. Curabitur suscipit odio in felis eleifend non porttitor dui auctor. Aenean sed libero mauris, vel sagittis neque. Mauris lobortis posuere sapien eget tempus. Sed scelerisque viverra scelerisque. Proin pharetra, tortor in adipiscing egestas, ante massa ultrices tellus, vitae molestie enim ante id diam. Aenean auctor mi a massa aliquet et facilisis nisi dignissim. Proin mauris turpis, fringilla et viverra ut, porta ac massa. Nulla adipiscing tincidunt metus, eget faucibus enim luctus interdum. Suspendisse tortor nibh, elementum ut dictum ac, ultricies quis nulla. Donec dictum, felis ac fermentum facilisis, augue dui mattis orci, ac feugiat mauris ante sit amet ligula. Nullam in dolor velit, non consectetur nisl. Nunc nec risus ante. Maecenas sapien dolor, faucibus a condimentum nec, luctus ut nulla. Donec feugiat ullamcorper risus. Quisque consequat pharetra velit, nec venenatis nibh pretium vitae. Mauris tempor tincidunt sagittis.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ac elit in est volutpat laoreet. Sed in turpis id odio molestie commodo et et felis. Praesent at magna mauris, at rutrum lacus. Fusce eu dictum erat. Etiam tellus quam, aliquam a imperdiet non, tempor nec est. Proin quis est lectus. Sed facilisis mauris scelerisque erat auctor ut tempor tellus consectetur. In sed erat non massa tincidunt consectetur. Proin vitae sollicitudin dolor. Morbi euismod hendrerit lorem vitae facilisis. Curabitur suscipit odio in felis eleifend non porttitor dui auctor. Aenean sed libero mauris, vel sagittis neque. Mauris lobortis posuere sapien eget tempus. Sed scelerisque viverra scelerisque. Proin pharetra, tortor in adipiscing egestas, ante massa ultrices tellus, vitae molestie enim ante id diam. Aenean auctor mi a massa aliquet et facilisis nisi dignissim. Proin mauris turpis, fringilla et viverra ut, porta ac massa. Nulla adipiscing tincidunt metus, eget faucibus enim luctus interdum. Suspendisse tortor nibh, elementum ut dictum ac, ultricies quis nulla. Donec dictum, felis ac fermentum facilisis, augue dui mattis orci, ac feugiat mauris ante sit amet ligula. Nullam in dolor velit, non consectetur nisl. Nunc nec risus ante. Maecenas sapien dolor, faucibus a condimentum nec, luctus ut nulla. Donec feugiat ullamcorper risus. Quisque consequat pharetra velit, nec venenatis nibh pretium vitae. Mauris tempor tincidunt sagittis.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ac elit in est volutpat laoreet. Sed in turpis id odio molestie commodo et et felis. Praesent at magna mauris, at rutrum lacus. Fusce eu dictum erat. Etiam tellus quam, aliquam a imperdiet non, tempor nec est. Proin quis est lectus. Sed facilisis mauris scelerisque erat auctor ut tempor tellus consectetur. In sed erat non massa tincidunt consectetur. Proin vitae sollicitudin dolor. Morbi euismod hendrerit lorem vitae facilisis. Curabitur suscipit odio in felis eleifend non porttitor dui auctor. Aenean sed libero mauris, vel sagittis neque. Mauris lobortis posuere sapien eget tempus. Sed scelerisque viverra scelerisque. Proin pharetra, tortor in adipiscing egestas, ante massa ultrices tellus, vitae molestie enim ante id diam. Aenean auctor mi a massa aliquet et facilisis nisi dignissim. Proin mauris turpis, fringilla et viverra ut, porta ac massa. Nulla adipiscing tincidunt metus, eget faucibus enim luctus interdum. Suspendisse tortor nibh, elementum ut dictum ac, ultricies quis nulla. Donec dictum, felis ac fermentum facilisis, augue dui mattis orci, ac feugiat mauris ante sit amet ligula. Nullam in dolor velit, non consectetur nisl. Nunc nec risus ante. Maecenas sapien dolor, faucibus a condimentum nec, luctus ut nulla. Donec feugiat ullamcorper risus. Quisque consequat pharetra velit, nec venenatis nibh pretium vitae. Mauris tempor tincidunt sagittis.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ac elit in est volutpat laoreet. Sed in turpis id odio molestie commodo et et felis. Praesent at magna mauris, at rutrum lacus. Fusce eu dictum erat. Etiam tellus quam, aliquam a imperdiet non, tempor nec est. Proin quis est lectus. Sed facilisis mauris scelerisque erat auctor ut tempor tellus consectetur. In sed erat non massa tincidunt consectetur. Proin vitae sollicitudin dolor. Morbi euismod hendrerit lorem vitae facilisis. Curabitur suscipit odio in felis eleifend non porttitor dui auctor. Aenean sed libero mauris, vel sagittis neque. Mauris lobortis posuere sapien eget tempus. Sed scelerisque viverra scelerisque. Proin pharetra, tortor in adipiscing egestas, ante massa ultrices tellus, vitae molestie enim ante id diam. Aenean auctor mi a massa aliquet et facilisis nisi dignissim. Proin mauris turpis, fringilla et viverra ut, porta ac massa. Nulla adipiscing tincidunt metus, eget faucibus enim luctus interdum. Suspendisse tortor nibh, elementum ut dictum ac, ultricies quis nulla. Donec dictum, felis ac fermentum facilisis, augue dui mattis orci, ac feugiat mauris ante sit amet ligula. Nullam in dolor velit, non consectetur nisl. Nunc nec risus ante. Maecenas sapien dolor, faucibus a condimentum nec, luctus ut nulla. Donec feugiat ullamcorper risus. Quisque consequat pharetra velit, nec venenatis nibh pretium vitae. Mauris tempor tincidunt sagittis.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ac elit in est volutpat laoreet. Sed in turpis id odio molestie commodo et et felis. Praesent at magna mauris, at rutrum lacus. Fusce eu dictum erat. Etiam tellus quam, aliquam a imperdiet non, tempor nec est. Proin quis est lectus. Sed facilisis mauris scelerisque erat auctor ut tempor tellus consectetur. In sed erat non massa tincidunt consectetur. Proin vitae sollicitudin dolor. Morbi euismod hendrerit lorem vitae facilisis. Curabitur suscipit odio in felis eleifend non porttitor dui auctor. Aenean sed libero mauris, vel sagittis neque. Mauris lobortis posuere sapien eget tempus. Sed scelerisque viverra scelerisque. Proin pharetra, tortor in adipiscing egestas, ante massa ultrices tellus, vitae molestie enim ante id diam. Aenean auctor mi a massa aliquet et facilisis nisi dignissim. Proin mauris turpis, fringilla et viverra ut, porta ac massa. Nulla adipiscing tincidunt metus, eget faucibus enim luctus interdum. Suspendisse tortor nibh, elementum ut dictum ac, ultricies quis nulla. Donec dictum, felis ac fermentum facilisis, augue dui mattis orci, ac feugiat mauris ante sit amet ligula. Nullam in dolor velit, non consectetur nisl. Nunc nec risus ante. Maecenas sapien dolor, faucibus a condimentum nec, luctus ut nulla. Donec feugiat ullamcorper risus. Quisque consequat pharetra velit, nec venenatis nibh pretium vitae. Mauris tempor tincidunt sagittis.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ac elit in est volutpat laoreet. Sed in turpis id odio molestie commodo et et felis. Praesent at magna mauris, at rutrum lacus. Fusce eu dictum erat. Etiam tellus quam, aliquam a imperdiet non, tempor nec est. Proin quis est lectus. Sed facilisis mauris scelerisque erat auctor ut tempor tellus consectetur. In sed erat non massa tincidunt consectetur. Proin vitae sollicitudin dolor. Morbi euismod hendrerit lorem vitae facilisis. Curabitur suscipit odio in felis eleifend non porttitor dui auctor. Aenean sed libero mauris, vel sagittis neque. Mauris lobortis posuere sapien eget tempus. Sed scelerisque viverra scelerisque. Proin pharetra, tortor in adipiscing egestas, ante massa ultrices tellus, vitae molestie enim ante id diam. Aenean auctor mi a massa aliquet et facilisis nisi dignissim. Proin mauris turpis, fringilla et viverra ut, porta ac massa. Nulla adipiscing tincidunt metus, eget faucibus enim luctus interdum. Suspendisse tortor nibh, elementum ut dictum ac, ultricies quis nulla. Donec dictum, felis ac fermentum facilisis, augue dui mattis orci, ac feugiat mauris ante sit amet ligula. Nullam in dolor velit, non consectetur nisl. Nunc nec risus ante. Maecenas sapien dolor, faucibus a condimentum nec, luctus ut nulla. Donec feugiat ullamcorper risus. Quisque consequat pharetra velit, nec venenatis nibh pretium vitae. Mauris tempor tincidunt sagittis.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ac elit in est volutpat laoreet. Sed in turpis id odio molestie commodo et et felis. Praesent at magna mauris, at rutrum lacus. Fusce eu dictum erat. Etiam tellus quam, aliquam a imperdiet non, tempor nec est. Proin quis est lectus. Sed facilisis mauris scelerisque erat auctor ut tempor tellus consectetur. In sed erat non massa tincidunt consectetur. Proin vitae sollicitudin dolor. Morbi euismod hendrerit lorem vitae facilisis. Curabitur suscipit odio in felis eleifend non porttitor dui auctor. Aenean sed libero mauris, vel sagittis neque. Mauris lobortis posuere sapien eget tempus. Sed scelerisque viverra scelerisque. Proin pharetra, tortor in adipiscing egestas, ante massa ultrices tellus, vitae molestie enim ante id diam. Aenean auctor mi a massa aliquet et facilisis nisi dignissim. Proin mauris turpis, fringilla et viverra ut, porta ac massa. Nulla adipiscing tincidunt metus, eget faucibus enim luctus interdum. Suspendisse tortor nibh, elementum ut dictum ac, ultricies quis nulla. Donec dictum, felis ac fermentum facilisis, augue dui mattis orci, ac feugiat mauris ante sit amet ligula. Nullam in dolor velit, non consectetur nisl. Nunc nec risus ante. Maecenas sapien dolor, faucibus a condimentum nec, luctus ut nulla. Donec feugiat ullamcorper risus. Quisque consequat pharetra velit, nec venenatis nibh pretium vitae. Mauris tempor tincidunt sagittis.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ac elit in est volutpat laoreet. Sed in turpis id odio molestie commodo et et felis. Praesent at magna mauris, at rutrum lacus. Fusce eu dictum erat. Etiam tellus quam, aliquam a imperdiet non, tempor nec est. Proin quis est lectus. Sed facilisis mauris scelerisque erat auctor ut tempor tellus consectetur. In sed erat non massa tincidunt consectetur. Proin vitae sollicitudin dolor. Morbi euismod hendrerit lorem vitae facilisis. Curabitur suscipit odio in felis eleifend non porttitor dui auctor. Aenean sed libero mauris, vel sagittis neque. Mauris lobortis posuere sapien eget tempus. Sed scelerisque viverra scelerisque. Proin pharetra, tortor in adipiscing egestas, ante massa ultrices tellus, vitae molestie enim ante id diam. Aenean auctor mi a massa aliquet et facilisis nisi dignissim. Proin mauris turpis, fringilla et viverra ut, porta ac massa. Nulla adipiscing tincidunt metus, eget faucibus enim luctus interdum. Suspendisse tortor nibh, elementum ut dictum ac, ultricies quis nulla. Donec dictum, felis ac fermentum facilisis, augue dui mattis orci, ac feugiat mauris ante sit amet ligula. Nullam in dolor velit, non consectetur nisl. Nunc nec risus ante. Maecenas sapien dolor, faucibus a condimentum nec, luctus ut nulla. Donec feugiat ullamcorper risus. Quisque consequat pharetra velit, nec venenatis nibh pretium vitae. Mauris tempor tincidunt sagittis.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ac elit in est volutpat laoreet. Sed in turpis id odio molestie commodo et et felis. Praesent at magna mauris, at rutrum lacus. Fusce eu dictum erat. Etiam tellus quam, aliquam a imperdiet non, tempor nec est. Proin quis est lectus. Sed facilisis mauris scelerisque erat auctor ut tempor tellus consectetur. In sed erat non massa tincidunt consectetur. Proin vitae sollicitudin dolor. Morbi euismod hendrerit lorem vitae facilisis. Curabitur suscipit odio in felis eleifend non porttitor dui auctor. Aenean sed libero mauris, vel sagittis neque. Mauris lobortis posuere sapien eget tempus. Sed scelerisque viverra scelerisque. Proin pharetra, tortor in adipiscing egestas, ante massa ultrices tellus, vitae molestie enim ante id diam. Aenean auctor mi a massa aliquet et facilisis nisi dignissim. Proin mauris turpis, fringilla et viverra ut, porta ac massa. Nulla adipiscing tincidunt metus, eget faucibus enim luctus interdum. Suspendisse tortor nibh, elementum ut dictum ac, ultricies quis nulla. Donec dictum, felis ac fermentum facilisis, augue dui mattis orci, ac feugiat mauris ante sit amet ligula. Nullam in dolor velit, non consectetur nisl. Nunc nec risus ante. Maecenas sapien dolor, faucibus a condimentum nec, luctus ut nulla. Donec feugiat ullamcorper risus. Quisque consequat pharetra velit, nec venenatis nibh pretium vitae. Mauris tempor tincidunt sagittis.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ac elit in est volutpat laoreet. Sed in turpis id odio molestie commodo et et felis. Praesent at magna mauris, at rutrum lacus. Fusce eu dictum erat. Etiam tellus quam, aliquam a imperdiet non, tempor nec est. Proin quis est lectus. Sed facilisis mauris scelerisque erat auctor ut tempor tellus consectetur. In sed erat non massa tincidunt consectetur. Proin vitae sollicitudin dolor. Morbi euismod hendrerit lorem vitae facilisis. Curabitur suscipit odio in felis eleifend non porttitor dui auctor. Aenean sed libero mauris, vel sagittis neque. Mauris lobortis posuere sapien eget tempus. Sed scelerisque viverra scelerisque. Proin pharetra, tortor in adipiscing egestas, ante massa ultrices tellus, vitae molestie enim ante id diam. Aenean auctor mi a massa aliquet et facilisis nisi dignissim. Proin mauris turpis, fringilla et viverra ut, porta ac massa. Nulla adipiscing tincidunt metus, eget faucibus enim luctus interdum. Suspendisse tortor nibh, elementum ut dictum ac, ultricies quis nulla. Donec dictum, felis ac fermentum facilisis, augue dui mattis orci, ac feugiat mauris ante sit amet ligula. Nullam in dolor velit, non consectetur nisl. Nunc nec risus ante. Maecenas sapien dolor, faucibus a condimentum nec, luctus ut nulla. Donec feugiat ullamcorper risus. Quisque consequat pharetra velit, nec venenatis nibh pretium vitae. Mauris tempor tincidunt sagittis.Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse ac elit in est volutpat laoreet. Sed in turpis id odio molestie commodo et et felis. Praesent at magna mauris, at rutrum lacus. Fusce eu dictum erat. Etiam tellus quam, aliquam a imperdiet non, tempor nec est. Proin quis est lectus. Sed facilisis mauris scelerisque erat auctor ut tempor tellus consectetur. In sed erat non massa tincidunt consectetur. Proin vitae sollicitudin dolor. Morbi euismod hendrerit lorem vitae facilisis. Curabitur suscipit odio in felis eleifend non porttitor dui auctor. Aenean sed libero mauris, vel sagittis neque. Mauris lobortis posuere sapien eget tempus. Sed scelerisque viverra scelerisque. Proin pharetra, tortor in adipiscing egestas, ante massa ultrices tellus, vitae molestie enim ante id diam. Aenean auctor mi a massa aliquet et facilisis nisi dignissim. Proin mauris turpis, fringilla et viverra ut, porta ac massa. Nulla adipiscing tincidunt metus, eget faucibus enim luctus interdum. Suspendisse tortor nibh, elementum ut dictum ac, ultricies quis nulla. Donec dictum, felis ac fermentum facilisis, augue dui mattis orci, ac feugiat mauris ante sit amet ligula. Nullam in dolor velit, non consectetur nisl. Nunc nec risus ante. Maecenas sapien dolor, faucibus a condimentum nec, luctus ut nulla. Donec feugiat ullamcorper risus. Quisque consequat pharetra velit, nec venenatis nibh pretium vitae. Mauris tempor tincidunt sagittis.";
NSString *txt2 = #"Quisque nec dui mauris, eget vestibulum arcu. Duis sed lacus lectus. Proin fermentum sapien eer conubia nostra, per inceptos himenaeos Quisque nec dui mauris, eget vestibulum arcu. Duis sed lacus lectus. Proin fermentum sapien eer conubia nostra, per inceptos himenaeos Quisque nec dui mauris, eget vestibulum arcu. Duis sed lacus lectus.";
NSString *txt3 = #"Suspendisse id arcu malesuada sem varius bibendum eu sit amet diam. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Curabitur quis tortor tristique nibh hendrerit luctus. Nullam nec augue quis libero malesuada blandit. Suspendisse et tellus dolor, eleifend condimentum augue. Aenean interdum, lorem a tincidunt laoreet, nisi neque dictum mi, ac laoreet lacus sem iaculis lorem. Cras ullamcorper mauris et quam euismod ac semper libero volutpat. Etiam massa risus, lobortis facilisis hendrerit eu, blandit sit amet nisi. Quisque sit amet nunc vel nunc aliquet dignissim in eget est. Aliquam erat volutpat. Donec varius suscipit dolor nec placerat. Ut eu dui vel nisl pretium sagittis nec quis risus. Suspendisse ut arcu enim, sit amet posuere libero. In dui magna, viverra id dictum eget, ornare et erat. Phasellus sit amet mi a magna iaculis scelerisque id eget turpis. Nam vitae mauris nunc. Curabitur erat ligula, consequat sit amet blandit ut, luctus in dui. Pellentesque non dignissim neque. Mauris mollis, lorem a aliquam faucibus, mi libero dignissim nisi, non luctus tortor mi vel magna. Vestibulum pellentesque, quam id consectetur iaculis, ipsum nibh aliquam nisi, eget tempor metus ipsum at neque. Vivamus elit urna, vestibulum varius pulvinar sit amet, vehicula quis ligula. Sed semper urna a erat pretium ut semper sem euismod.";
NSArray *textos = [[NSArray alloc] initWithObjects:txt1,txt2,txt3,nil];
scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,768,1024)];
scrollView.pagingEnabled = YES;
[scrollView setIndicatorStyle:UIScrollViewIndicatorStyleWhite];
int numberOfViews = 3;
for (int i = 0; i < numberOfViews; i++) {
CGFloat xOrigin = i * 768;
UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(xOrigin,0,768,1024)];
[textView setText:[textos objectAtIndex:i]];
CGRect frameText = textView.frame;
frameText.size.height = textView.contentSize.height;
textView.frame = frameText;
[scrollView addSubview:textView];
[textView release];
}
scrollView.contentSize = CGSizeMake(numberOfViews * 768, 1024);
[self.view addSubview:scrollView];
And show a UIScrollView with pages, but the first text is biggest then 1024 pixels of the height.
how can I cut the text and put leftovers in another page with txt2?
Thanks
I don't know if there is any inbuilt functionality to do this but you can try this thing
UIFont *font = [UIFont systemFontOfSize:14.0];
NSArray *arrTxt1 = [txt1 componentsSeparatedByString:#" "];
NSMutableString *restOFStr = [[NSMutableString alloc] init];
NSMutableString *initialStr = [[NSMutableString alloc] init];
BOOL gotStr = NO;
for (NSString *tStr in arrTxt1) {
if (gotStr) {
[initialStr appendString:tStr];
CGSize size = [initialStr sizeWithFont:font constrainedToSize:CGSizeMake(768, MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping];
if(size.height > 1024){
// Displayed in first page
[initialStr deleteCharactersInRange:NSMakeRange(initialStr.length-tStr.length, tStr.length)];
//Add tStr to restOfStr
[restOFStr appendString:tStr];
gotStr = YES;
}
else {
[initialStr appendString:#" "];
}
}
else {
//Collect the rest of string
[restOFStr appendString:tStr];
}
}
Edit
The logic here I'm using is to get the string that fits in the 768x1024 UITextView.
For that I divided your string into components separated by space i.e. if your string is "Hello how are you?"
Then the array will have
arrTxt1[0]---->Hello
arrTxt1[1]---->how
arrTxt1[2]---->are
arrTxt1[3]---->you?
Then I'm calculating the size and checking if height is less than 1024 then I append the string and where it exceeds 1024 I stop appending.
At last you have initialStr which will fit in 768x1024 and restOFStr the leftover string.