UITextField пользовательское фоновое представление и смещающийся текст

Основная стоимость производительности будет диском i/o. "mmap ()", конечно, более быстр, чем istream, но различие не могло бы быть примечательным, потому что диск i/o будет доминировать над Вашим временем выполнения.

я попробовал фрагмент кода Ben Collins (см. выше/ниже) протестировать его утверждение, которое "mmap () путь быстрее" и не нашло измеримого различия. См. мои комментарии к его ответу.

я был бы, конечно не , рекомендуют отдельно mmap'ing каждую запись в свою очередь, если Ваши "записи" не огромны - который был бы ужасно медленным, требуя 2 системных вызовов каждой записи и возможно теряя страницу из кэша памяти на дисках.....

В Вашем случае я думаю mmap (), istream и открытый низкий уровень () / чтение (), вызовы все будут о том же. Я рекомендовал бы mmap () в этих случаях:

  1. существует произвольный доступ (не последователен) в файле, И
  2. все это подходит удобно к памяти ИЛИ существует местность ссылки в файле так, чтобы определенные страницы могли быть отображены в и другие планировавшие страницы. Тем путем операционная система использует доступную RAM для максимального преимущества.
  3. ИЛИ если несколько процессов читают/работают на том же файле, то mmap () является фантастическим, потому что процессы все поделятся теми же физическими страницами.

(btw - я люблю mmap ()/MapViewOfFile ()).

5
задан skaffman 30 September 2010 в 17:40
поделиться

2 ответа

Я думаю, вы могли бы использовать для этого свойство leftView .

Вы можете добавить leftView и rightView в поле UITextfield. Эти представления можно использовать для отображения значка, но если это пустое представление, оно просто займет место, что вам и нужно.

CGFloat leftInset = 5.0f;
UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, leftInset, self.bounds.size.height)];
self.leftView = leftView;
self.leftViewMode = UITextFieldViewModeAlways;
[leftView release];
14
ответ дан 18 December 2019 в 05:43
поделиться

К вашему сведению, но у меня была та же проблема, и я, наконец, понял, что есть еще метод редактированияRectForBounds:. Элемент управления использует его, когда вы изначально вводите что-то в поле. Если у него есть значение и он больше не находится в режиме редактирования, он затем использует textRectForBounds:, чтобы решить, где рисовать текст.

5
ответ дан 18 December 2019 в 05:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: