Интерполяция строк - это компилятор, а не библиотека.
Отверстия не являются именами, а выражениями:
var r = new Rectangle(5, 4);
var s = $"area: {r.Width + r.Heigh}":
Как вы это сделаете для локализации, так как вы намерены?
Даже r
существует только во время компиляции. В IL это просто позиция в стеке переменных метода.
Я сделал то, что вы намереваетесь сделать для ресурсов и файлов конфигурации.
Поскольку вы можете иметь только конечный набор «переменные» для замены, то, что я сделал, был массив (или словарь, если вы предпочитаете), и используйте регулярное выражение для замены имен в отверстиях индексом. То, что я даже допустил для спецификаторов формата.
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], но другие приложения могли бы хотеть использовать различное значение.
Я настоятельно рекомендовал бы включение Вашего UIImageView
в UIScrollView
. Имейте эти UIImageView
, отображают полный образ и устанавливают contentSize на UIScrollView
для совпадения с Вашим UIImageView's
размер. Ваш window
в изображение будет размер эти UIScrollView
, и при помощи scrollRectToVisible:animated:
можно панорамировать к конкретным областям на изображении анимированным способом.
, Если Вы не хотите, чтобы полосы прокрутки появились, можно установить showsHorizontalScrollIndicator
и showsVerticalScrollIndicator
свойства к [1 110].
UIScrollView
также обеспечивает масштабирующую повышение функциональность, которая может или не может быть полезна для Вас.