Brad Larson указал на меня вниз правильная дорога с его предложением для помещения UIImageView
внутренняя часть UIScrollView
.
В конце я поместил UIImageView
внутренняя часть UIScrollView
и установил scrollView's contentSize
и imageView
границы, чтобы быть тем же размером как изображение в UIImage:
UIImage* image = imageView.image;
imageView.bounds = CGRectMake(0, 0, image.size.width, image.size.height);
scrollView.contentSize = image.size;
Затем я могу анимировать scrollView's contentOffset
для достижения хорошего эффекта панорамирования:
[UIView beginAnimations:@"pan" context:nil];
[UIView setAnimationDuration:animationDuration];
scrollView.contentOffset = newRect.origin;
[UIView commitAnimations];
В моем особом случае, я панорамирую к случайному пространству в изображении. Чтобы найти, что надлежащее реагирует на панорамирование к [1 118] и надлежащая продолжительность для получения хорошей постоянной скорости, я использую следующее:
UIImage* image = imageView.image;
float xNewOrigin = [TCBRandom randomIntLessThan:image.size.width - scrollView.bounds.size.width];
float yNewOrigin = [TCBRandom randomIntLessThan:image.size.height - scrollView.bounds.size.height];
CGRect oldRect = scrollView.bounds;
CGRect newRect = CGRectMake(
xNewOrigin,
yNewOrigin,
scrollView.bounds.size.width,
scrollView.bounds.size.height);
float xDistance = fabs(xNewOrigin - oldRect.origin.x);
float yDistance = fabs(yNewOrigin - oldRect.origin.y);
float hDistance = sqrtf(powf(xDistance, 2) + powf(yDistance, 2));
float hDistanceInPixels = hDistance;
float animationDuration = hDistanceInPixels / speedInPixelsPerSecond;
я использую speedInPixelsPerSecond
из [1 111], но другие приложения могли бы хотеть использовать различное значение.
В настоящее время меня интересует, как создавать хорошие .NET-приложения, и я читаю или уже прочитал несколько из следующих книг:
Эти две книги Microsoft действительно объясняют, как проектировать .NET. приложения с высокой тестируемостью, использующие Inversion Of Control и т. д.
И, чтобы было ясно, все они используют шаблоны проектирования, общие в TDD, DDD, Dependency Injection и т. д.
Вот некоторые из них, которые я бы порекомендовал:
Для TDD попробуйте xUnit Test Patterns .
Лучшая книга, которую я недавно прочитал для заполнения пробелов, - это C # in deep Джона Скит. Только после прочтения этой книги я осознал, сколько пробелов в моих знаниях C #.
Угадайте, что круг вопросов, которые вы задали, огромен, чтобы их можно было охватить в одной книге
Попробуйте эту Agile Principles, Patterns, and Practices in C # By Martin и Мартин
Книга в основном говорит о принципах проектирования, паттернах дизайна, диаграммах UML, документации, рефакторинге. Однако он не распространяется на ASP.NET и MVC. Для этого вам нужно сослаться на другие книги.
"Домен-ориентированный дизайн: преодоление сложности в самой основе программного обеспечения" Эрика Эванса.
Для ваших нужд я бы рекомендовал начать с:
Как сказано в заголовке; Это в основном книга о том, как использовать DDD и TDD в среде .NET.
Попробуйте Применение дизайна и шаблонов на основе предметной области Джимми Ниллсон. Он охватывает DDD и его шаблоны в .NET
Pro ASP.NET MVC Framework Стива Сандерсона включает очевидную ASP.NET MVC тему с C#, а также TDD, паттерн репозитория и моделирование домена. Хороший обзор всех этих тем в одной книге.
Для более глубокого освещения DDD, я согласен с Арнисом L, чтобы получить библию ("Domain Driven Design: Tackling Complexity in the Heart of Software") Эрика Эванса, а для взгляда, специфичного для .NET, я согласен с Пер Ноалтом о применении дизайна и шаблонов, управляемых доменом: С примерами на C# и .NET.
Pro ASP.NET MVC Framework http://www.apress.com/resource/bookcover/9781430210078?size=medium