IOS UIColor in struct - objective-c

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec mauris nibh, venenatis sed purus nec, consequat commodo turpis. Quisque rhoncus maximus mattis. Morbi convallis sagittis lectus eget mollis. Nunc tristique, lectus ac faucibus elementum, dui enim porta ex, nec vestibulum sem neque sit amet est. Donec massa arcu, fermentum a massa eu, maximus rutrum urna. Vestibulum imperdiet pulvinar ipsum, non imperdiet orci efficitur quis. Donec volutpat erat dui, a sodales enim blandit ut. Pellentesque ac imperdiet nibh, sed feugiat lorem. Praesent in velit et est tempus facilisis sed at urna. Nulla sapien sem, sagittis eu mauris quis, consequat tempor sem. Mauris rhoncus, turpis eu vehicula volutpat, nibh libero fermentum quam, vel posuere ante metus quis leo. Maecenas et lorem feugiat neque lobortis accumsan.

You should use the opaque type CGColorRef instead of UIColor on your struct. Then, in the CocoaTouch portion of your code you could get a UIColor instance like this:
UIColor *color = [UIColor colorWithCGColor:colorRef];

I saves you some hassle if you follow that advice of not mixing structs and objects. That leaves you with two possibilities:
Using Objective-C objects: Make "LevelMeterColorThreshold" a class with two properties instead of a struct.
Use C structs and C primitives: Instead of "UIColor" use three floats red/green/blue - if that is sufficient. Then you can reconstruct a UIColor later on.
I probably would pick #1.

How is it possible that in this example: http://developer.apple.com/library/ios/#samplecode/SpeakHere/Listings/AudioViews_LevelMeter_h.html#//apple_ref/doc/uid/DTS40007802-AudioViews_LevelMeter_h-DontLinkElementID_7
they are using the struct with UIColor*?

Related

First page after titlepage (with titlepage extension) with too large bottom margin in Quarto for pdf

I am working with Quarto to create a pdf document from rstudio. I use the quarto_titlepages extension to create a title page, which is followed by a text of several pages. The first one of these pages is shown with a very large bottom margin, which is probably a heritage of the title page. However, this only happens with the bottom margin and not with the top one.
I tried re-stablishing the margins in the pdf format section with margin-left, margin-right, margin-bottom and margin-top. Then I tried the same approach but using geometry instead. None of the two options worked.
Here is the code with margin-top and so on.
---
title: "Here we have a title, not too long"
author: "First Author and Second Author"
date: last-modified
date-format: "d-MMMM-YYYY"
lang: "es"
format:
titlepage-pdf:
documentclass: scrreport
titlepage: plain
titlepage-geometry:
- top=90mm
- bottom=60mm
- right=30mm
- left=30mm
titlepage-logo: "images/anyimages.png"
titlepage-bg-image: "images/anyimage2.png"
titlepage-theme:
elements: ["\\titleblock", "\\logoblock", "\\authorblock", "(some additional information)" ]
page-fontfamily: "Helvetica Neue"
page-align: center
title-fontsize: 30
title-align: center
title-fontstyle: []
title-space-after: 3cm
author-fontsize: 16
author-style: plain
logo-align: center
logo-size: 4cm
logo-space-after: 4cm
bg-image-location: "ULCorner"
bg-image-size: 21cm
pdf:
# Fonts
mainfont: Helvetica Neue
fontsize: 12pt
papersize: A4
margin-top: 25mm
margin-bottom: 25mm
margin-left: 25mm
margin-right: 25mm
toc: true
toc-depth: 2
toc-title: Táboa de contidos
editor: visual
---
## Introdución
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras nec condimentum eros. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed congue tellus at vehicula interdum. Vivamus dapibus ante vitae rhoncus posuere. Ut ut ipsum nisl. Nullam luctus viverra augue id feugiat. Fusce sollicitudin sed massa eget blandit. Pellentesque tempus lacinia metus, nec facilisis massa varius eget. Proin in felis sed arcu faucibus scelerisque. Sed hendrerit tortor nisl, sed mattis lectus luctus at. Nulla et lorem ac est venenatis posuere. Vivamus eget vehicula purus, sit amet mollis nunc. Phasellus pellentesque nisi eu porttitor egestas. Aliquam a aliquam lectus, eu iaculis mauris.
Suspendisse eu gravida orci. Suspendisse vehicula sagittis libero quis lobortis. Suspendisse potenti. Sed imperdiet ligula eu tellus tincidunt rutrum. Vivamus vel nibh vel lacus efficitur tempus. Maecenas sit amet erat at sapien blandit congue. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vivamus vel nunc hendrerit, venenatis sapien nec, commodo libero. Ut vehicula porta euismod. Vivamus eu dolor neque. Mauris a dui faucibus, elementum dui nec, condimentum nibh.
Etiam aliquam, arcu eget ornare elementum, leo magna sollicitudin augue, vel dapibus lectus nisi ac ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec semper lacus mauris, ac maximus lectus volutpat nec. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed interdum, velit non sollicitudin volutpat, purus tellus aliquam lacus, et scelerisque ex nisi et ex. Vivamus porta purus ac mauris placerat, venenatis suscipit augue accumsan. Cras consequat dapibus efficitur.
Phasellus diam felis, condimentum vitae diam nec, tincidunt bibendum elit. Donec condimentum, orci in euismod vestibulum, sapien massa maximus lectus, vel interdum magna magna non lectus. Integer vitae nunc nec urna feugiat venenatis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Praesent sapien velit, molestie nec molestie vel, sodales at mauris. Maecenas accumsan malesuada ipsum eget pellentesque. Nam aliquet leo sit amet felis facilisis facilisis. Vivamus aliquam iaculis eros, non bibendum elit convallis ut. Quisque ut varius arcu. Vivamus pellentesque nisi vitae nisi vulputate, quis dapibus est efficitur. Aenean eget ipsum in lorem aliquet efficitur aliquet a est. In sit amet vehicula eros. Donec dui nulla, ultrices ut nisi non, ornare viverra ante.
Proin facilisis sit amet velit placerat porttitor. In congue risus id tempus congue. Cras rutrum justo at ultricies faucibus. Ut sed turpis nec nulla malesuada feugiat sed eu risus. In mattis eu tellus sit amet commodo. Nam molestie vulputate ullamcorper. Curabitur egestas ligula ut urna blandit faucibus.
And this is what I get in the two pages after the title page
UPDATE
I solved it partially, by following samcarter_is_at_topanswers.xyz's advice (using \restoregeometry). Then I realized that it was not only geometry, but I was also losing all other formats detailed under pdf:. To solve it I erased the pdf: line; that is, all pdf formats should directly go under "titlepage-pdf:". But, again, by doing so, the first page appeard with a large bottom margin, even when using \restoregeometry.
This is my code now:
---
title: "Here we have a title"
author: "Author 1 with surname & Author 2 with surname"
date: last-modified
date-format: "d-MMMM-YYYY"
lang: "es"
format:
titlepage-pdf:
documentclass: scrreport
titlepage: plain
titlepage-geometry:
- top=90mm
- bottom=60mm
- right=30mm
- left=30mm
titlepage-logo: "images/circularNegro.png"
titlepage-bg-image: "images/OsTres.png"
titlepage-theme:
elements: ["\\titleblock", "\\logoblock", "\\authorblock", "(some additional text)" ]
page-fontfamily: "Helvetica Neue"
page-align: center
title-fontsize: 30
title-align: center
title-fontstyle: []
title-space-after: 3cm
author-fontsize: 16
author-style: plain
logo-align: center
logo-size: 4cm
logo-space-after: 4cm
bg-image-location: "ULCorner"
bg-image-size: 21cm
# Fonts
mainfont: Helvetica Neue
fontsize: 12pt
papersize: A4
margin-top: 25mm
margin-bottom: 25mm
margin-left: 25mm
margin-right: 25mm
toc: true
toc-depth: 2
toc-title: Táboa de contidos
editor: visual
---
\restoregeometry
## Introdución
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras nec condimentum eros. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed congue tellus at vehicula interdum. Vivamus dapibus ante vitae rhoncus posuere. Ut ut ipsum nisl. Nullam luctus viverra augue id feugiat. Fusce sollicitudin sed massa eget blandit. Pellentesque tempus lacinia metus, nec facilisis massa varius eget. Proin in felis sed arcu faucibus scelerisque. Sed hendrerit tortor nisl, sed mattis lectus luctus at. Nulla et lorem ac est venenatis posuere. Vivamus eget vehicula purus, sit amet mollis nunc. Phasellus pellentesque nisi eu porttitor egestas. Aliquam a aliquam lectus, eu iaculis mauris.
Suspendisse eu gravida orci. Suspendisse vehicula sagittis libero quis lobortis. Suspendisse potenti. Sed imperdiet ligula eu tellus tincidunt rutrum. Vivamus vel nibh vel lacus efficitur tempus. Maecenas sit amet erat at sapien blandit congue. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vivamus vel nunc hendrerit, venenatis sapien nec, commodo libero. Ut vehicula porta euismod. Vivamus eu dolor neque. Mauris a dui faucibus, elementum dui nec, condimentum nibh.
Etiam aliquam, arcu eget ornare elementum, leo magna sollicitudin augue, vel dapibus lectus nisi ac ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec semper lacus mauris, ac maximus lectus volutpat nec. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed interdum, velit non sollicitudin volutpat, purus tellus aliquam lacus, et scelerisque ex nisi et ex. Vivamus porta purus ac mauris placerat, venenatis suscipit augue accumsan. Cras consequat dapibus efficitur.
Phasellus diam felis, condimentum vitae diam nec, tincidunt bibendum elit. Donec condimentum, orci in euismod vestibulum, sapien massa maximus lectus, vel interdum magna magna non lectus. Integer vitae nunc nec urna feugiat venenatis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Praesent sapien velit, molestie nec molestie vel, sodales at mauris. Maecenas accumsan malesuada ipsum eget pellentesque. Nam aliquet leo sit amet felis facilisis facilisis. Vivamus aliquam iaculis eros, non bibendum elit convallis ut. Quisque ut varius arcu. Vivamus pellentesque nisi vitae nisi vulputate, quis dapibus est efficitur. Aenean eget ipsum in lorem aliquet efficitur aliquet a est. In sit amet vehicula eros. Donec dui nulla, ultrices ut nisi non, ornare viverra ante.
Proin facilisis sit amet velit placerat porttitor. In congue risus id tempus congue. Cras rutrum justo at ultricies faucibus. Ut sed turpis nec nulla malesuada feugiat sed eu risus. In mattis eu tellus sit amet commodo. Nam molestie vulputate ullamcorper. Curabitur egestas ligula ut urna blandit faucibus.
And this is what I get:
The problem is that quarto and/or the titlepage extension issues \restoregeometry at the wrong place. If one looks at the intermediate .tex file, one will see code like this:
...
\clearpage
\restoregeometry
%%% TITLE PAGE END
\end{titlepage}
...
However \restoregeometry needs to be used after the title page is closed (it would also make more sense to have the \clearpage after the title page...)
You can work around it my manually adding one more \restoregeometry before your text:
---
title: "Here we have a title, not too long"
author: "First Author and Second Author"
date: last-modified
date-format: "d-MMMM-YYYY"
lang: "es"
format:
titlepage-pdf:
documentclass: scrreport
titlepage: plain
titlepage-geometry:
- top=90mm
- bottom=60mm
- right=30mm
- left=30mm
titlepage-logo: "example-image-duck"
titlepage-bg-image: "example-image-duck"
titlepage-theme:
elements: ["\\titleblock", "\\logoblock", "\\authorblock", "(some additional information)" ]
page-fontfamily: "Helvetica Neue"
page-align: center
title-fontsize: 30
title-align: center
title-fontstyle: []
title-space-after: 3cm
author-fontsize: 16
author-style: plain
logo-align: center
logo-size: 4cm
logo-space-after: 4cm
bg-image-location: "ULCorner"
bg-image-size: 21cm
editor: visual
---
\restoregeometry
## Introdución
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras nec condimentum eros. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed congue tellus at vehicula interdum. Vivamus dapibus ante vitae rhoncus posuere. Ut ut ipsum nisl. Nullam luctus viverra augue id feugiat. Fusce sollicitudin sed massa eget blandit. Pellentesque tempus lacinia metus, nec facilisis massa varius eget. Proin in felis sed arcu faucibus scelerisque. Sed hendrerit tortor nisl, sed mattis lectus luctus at. Nulla et lorem ac est venenatis posuere. Vivamus eget vehicula purus, sit amet mollis nunc. Phasellus pellentesque nisi eu porttitor egestas. Aliquam a aliquam lectus, eu iaculis mauris.
Suspendisse eu gravida orci. Suspendisse vehicula sagittis libero quis lobortis. Suspendisse potenti. Sed imperdiet ligula eu tellus tincidunt rutrum. Vivamus vel nibh vel lacus efficitur tempus. Maecenas sit amet erat at sapien blandit congue. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vivamus vel nunc hendrerit, venenatis sapien nec, commodo libero. Ut vehicula porta euismod. Vivamus eu dolor neque. Mauris a dui faucibus, elementum dui nec, condimentum nibh.
Etiam aliquam, arcu eget ornare elementum, leo magna sollicitudin augue, vel dapibus lectus nisi ac ipsum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec semper lacus mauris, ac maximus lectus volutpat nec. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed interdum, velit non sollicitudin volutpat, purus tellus aliquam lacus, et scelerisque ex nisi et ex. Vivamus porta purus ac mauris placerat, venenatis suscipit augue accumsan. Cras consequat dapibus efficitur.
Phasellus diam felis, condimentum vitae diam nec, tincidunt bibendum elit. Donec condimentum, orci in euismod vestibulum, sapien massa maximus lectus, vel interdum magna magna non lectus. Integer vitae nunc nec urna feugiat venenatis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Praesent sapien velit, molestie nec molestie vel, sodales at mauris. Maecenas accumsan malesuada ipsum eget pellentesque. Nam aliquet leo sit amet felis facilisis facilisis. Vivamus aliquam iaculis eros, non bibendum elit convallis ut. Quisque ut varius arcu. Vivamus pellentesque nisi vitae nisi vulputate, quis dapibus est efficitur. Aenean eget ipsum in lorem aliquet efficitur aliquet a est. In sit amet vehicula eros. Donec dui nulla, ultrices ut nisi non, ornare viverra ante.
Proin facilisis sit amet velit placerat porttitor. In congue risus id tempus congue. Cras rutrum justo at ultricies faucibus. Ut sed turpis nec nulla malesuada feugiat sed eu risus. In mattis eu tellus sit amet commodo. Nam molestie vulputate ullamcorper. Curabitur egestas ligula ut urna blandit faucibus.

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

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.