Вы можете добавить следующий код до addSubview
toViewController.view.frame = [transitionContext finalFrameForViewController:toViewController];
С другого вопроса custom-transition-for-push-animation-with-navigationcontroller-on-ios-9
Из документации Apple для finalFrameForViewController:
Возвращает прямоугольник конечного кадра для указанного представления контроллера представления.
Прямоугольник, возвращаемый этим метод представляет размер соответствующего представления в конце перехода. Для представления, которое рассматривается во время презентации, значение, возвращаемое этим методом, может быть CGRectZero, но оно также может быть допустимым прямоугольником рамки.
blockquote>
Существует гем сообщения об ошибке клиента, который должен делать то, что вы хотите
https://github.com/jeremydurham/custom-err-msg
It позволяет вам переопределить обычную конструкцию сообщения и самостоятельно определить полное сообщение следующим образом:
: message => "^ Ваш адрес электронной почты выглядит не так, как надо, пожалуйста, попробуйте еще раз"
Обратите внимание на символ ^, который говорит рельсам НЕ начинать что-либо, просто используйте сообщение точно так, как определено, (за исключением того, что он удаляет ^)
Если вы не поставите ведущий ^, то вы получите обычную ошибку, сгенерированную рельсами сообщение.
Я сделал это таким образом, чтобы переопределить ВСЕ сообщения, а не использовать помощники форм Rails для отображения сообщений об ошибках.
Это кажется большим трудом, но на самом деле у него есть несколько хороших преимуществ. Вы получаете полный контроль над сообщением, а затем можете реализовать собственный конструктор форм, который может помещать сообщения об ошибках в строку, что удобнее для пользователя.
Вы используете его так:
validates_uniqueness_of: foobar,: message => «Панель foobar не уникальна.»
Тогда не используйте full_messages
при печати сообщения об ошибке.
Это лучшее объяснение, которое я смог найти.
http://adamhooper.com/eng/articles/5
По сути, в инициализаторе измените метод full_messages в ActiveRecord.Errors, чтобы возвращать полные предложения (не имя_столбца, конкатенации сообщений), если вы даете: message атрибут в проверке.
Обновление - Если вы попробуете код Адама, вам придется использовать файл свойств en.yml, в противном случае он не будет работать должным образом. Вы можете сделать это или обойти это, дополнительно изменив метод full_messages. У меня это работает. Я добавил следующее к инициализатору (/imitializers/active_record_errors.rb)
if RAILS_GEM_VERSION =~ /^2\.3/
ActiveRecord::Errors.class_eval do
# Remove complicated logic
def full_messages
returning full_messages = [] do
@errors.each_key do |attr|
@errors[attr].each do |message|
next unless message
if attr == "base"
full_messages << message
elsif message =~ /^\^/
full_messages << $' #' Grabs the text after the '^'
else
attr_name = @base.class.human_attribute_name(attr)
full_messages << attr_name + I18n.t('activerecord.errors.format.separator', :default => ' ') + message
end
end
end
end
end
end
end
Адам также приводит веские аргументы в пользу модификации Rails для поддержки этого в усилиях по интернационализации.
ссылка на rubyforge не работает, вот плагин настраиваемых сообщений об ошибках на github: