Поддержка Unicode в PHP по-прежнему огромна. Хотя он способен преобразовывать строку ISO8859 (которая используется внутри нее) в utf8, ей не хватает возможности работать с строками unicode изначально, что означает, что все функции обработки строк будут искажать и повреждать ваши строки. Таким образом, вам нужно либо использовать отдельную библиотеку для правильной поддержки utf8, либо самостоятельно переписать все функции обработки строк.
. Легкая часть - это просто указать кодировку в заголовках HTTP и в базе данных и т. Д., Но нет что имеет значение, если ваш PHP-код не выводит допустимый UTF8. Это сложная часть, и PHP практически не помогает. (Я думаю, что PHP6 должен исправить худшее из этого, но это все еще вдалеке)
Прежде всего, вы должны удалить UIImageView
из заголовка и добавить его как простую UIImageView
поверх UITableView
, то, поскольку протокол UITableViewDelegate
соответствует протоколу UIScrollViewDelegate
, вы можете реализовать scrollViewDidScroll:
, чтобы проверить, когда tableView
прокручивается вниз и имеет эффект bouncing
. что-то вроде этого:
-(void)someInitMethod {
initialFrame = yourHeaderView.frame;
}
-(void)scrollViewDidScroll:(UIScrollView*)scrollView {
if(scrollView.contentOffset.y < 0) {
initialFrame.size.height -= scrollView.contentOffset.y;
yourHeaderView.frame = initialFrame;
}
}
Также убедитесь, что вы установили правильный contentMode
для своего UIImageView
. Также я думаю, что эта реализация создаст эффект подпрыгивания, но я не уверен, потому что я не могу проверить его прямо сейчас, но я думаю, что это хорошая стартовая точка для вас.
Недавно я опубликовал сообщение в блоге об этом, используя ограничения, которые могут помочь, оказалось, что это было довольно просто.
Вот ссылка: Создание эффекта параллакса на UIScrollView с использованием ограничений
Так я и достиг этого, в моем случае я использовал представление карты вверху:
viewDidLoad
добавьте следующее: tableView.contentInset = UIEdgeInsetsMake(200, 0, 0, 0)
, где 200
высота представления. func scrollViewDidScroll(scrollView: UIScrollView) {
var scrollOffset = scrollView.contentOffset.y
var headerFrame = mapView.frame
if (scrollOffset < 0) {
// Adjust map
headerFrame = CGRect(x: mapView.frame.origin.x,
y: mapView.frame.origin.y,
width: mapView.frame.size.width,
height: -scrollOffset)
} else {
// Adjust map
headerFrame = CGRect(x: mapView.frame.origin.x,
y: mapView.frame.origin.y,
width: mapView.frame.size.width,
height: 0)
}
mapView.frame = headerFrame
}
Если бы я мог установить contentInset
из раскадровки, он был бы еще более симпатичным
Я не знаю, если это поможет вам или нет.
Установите свой делегат прокрутки в self.
, а затем выполните это:
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
float scrollViewHeight = scrollView.frame.size.height;
float scrollContentSizeHeight = scrollView.contentSize.height;
float scrollOffset = scrollView.contentOffset.y;
if (scrollOffset == 0)
{
// then we are at the top
}
else if (scrollOffset + scrollViewHeight == scrollContentSizeHeight)
{
// then we are at the end
// Do what you need here
}
}
Пожалуйста, посмотрите на этот https://github.com/matteogobbi/MGSpotyViewController , который реализует тот же эффект, что и ваше требование.
Предыдущие решения на этой странице дали мне некоторые проблемы, когда мне это нужно, чтобы работать вместе с заголовками разделов и индексной панелью, поэтому я придумал следующую альтернативу. Пожалуйста, обратите внимание; Я не использую автозапуск в своем проекте, и я тестировал это только на iOS9 +;
В раскадровке вашего проекта:
Затем перейдите к вашему UIViewController.m:
- (void)viewDidLoad
{
[super viewDidLoad];
// Remove view from table header and place it in the background instead.
[self.headerView removeFromSuperview];
UIView *backgroundView = [UIView new];
[backgroundView addSubview:self.headerView];
self.tableView.backgroundView = backgroundView;
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
/* Set initialScrollOffset ivar to start offset, because in my case
the scroll offset was affected by the statusbar + navigation bar heights
and the view controller's "extend edges under top bars" option. */
initialScrollOffset = self.tableView.contentOffset.y;
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
/* Modify headerView height only if the table content gets pulled
beyond initial offset. */
if (scrollView.contentOffset.y < initialScrollOffset) {
CGRect frame = self.headerView.frame;
frame.size.height = self.tableView.tableHeaderView.frame.size.height + -scrollView.contentOffset.y;
self.headerView.frame = frame;
}
}
Мне понадобилась эта реализация только для заголовка растяжения с цветом фона и метками. В этом заголовке должно быть легко добавить UIImageView.
Кроме того, шаги с 1 по 5, конечно, полностью необязательны. Вы можете программно создать представление заголовка или вместо него использовать XIB. До тех пор, пока вы убедитесь, что таблица имеет вид с четким цветным заголовком с той же высотой, что и ваш желаемый заголовок, потому что это служит в качестве разделителя, чтобы сохранить ваши ячейки и заголовки разделов в строке.
EDIT:
Я нашел еще более чистый способ выполнить это:
viewDidLoad
выше, нет необходимости вытаскивать UIView из его контейнера, и нам не нужно будет устанавливать его в качестве фона таблицы. scrollViewDidScroll:
к этому: UIViewController.m:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (scrollView.contentOffset.y < initialScrollOffset) {
CGRect frame = self.headerView.frame;
frame.size.height = self.tableView.tableHeaderView.frame.size.height - scrollView.contentOffset.y;
frame.origin.y = self.tableView.tableHeaderView.frame.origin.y + scrollView.contentOffset.y;
self.headerView.frame = frame;
}
}
Вот и все. Только визуальное отличие от другого решения состоит в том, что содержимое теперь будет прокручиваться вместе с остальными ячейками, а не перекрываться ими.
+
instad-
, но я не уверен. Поэтому сначала проверьте рамку просмотра изображения вscrollViewDidScroll
, и после этого, если все правильно, проверьте, есть ли необходимость вsetNeedsDisplay
для ImageView для перерисовки изображения. – danypata 12 June 2013 в 08:59