From 648d0cace752b0404141f16c002b883ae2edc218 Mon Sep 17 00:00:00 2001 From: Klaas Pieter Annema Date: Thu, 19 Nov 2015 12:01:49 -0500 Subject: [PATCH] Support customizing brand images --- .../UI/STPPaymentCardTextField.h | 3 +++ Stripe/UI/STPPaymentCardTextField.m | 20 +++++++++++++++++-- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/Stripe/PublicHeaders/UI/STPPaymentCardTextField.h b/Stripe/PublicHeaders/UI/STPPaymentCardTextField.h index 135b077c7f..5e97c34559 100644 --- a/Stripe/PublicHeaders/UI/STPPaymentCardTextField.h +++ b/Stripe/PublicHeaders/UI/STPPaymentCardTextField.h @@ -128,6 +128,9 @@ */ - (void)clear; +- (nullable UIImage *)cvcImageForCardBrand:(STPCardBrand)cardBrand; +- (nullable UIImage *)brandImageForCardBrand:(STPCardBrand)cardBrand; + /** * Whether or not the form currently contains a valid card number, expiration date, and CVC. * @see STPCardValidator diff --git a/Stripe/UI/STPPaymentCardTextField.m b/Stripe/UI/STPPaymentCardTextField.m index 09592c6668..b7b79f9b89 100644 --- a/Stripe/UI/STPPaymentCardTextField.m +++ b/Stripe/UI/STPPaymentCardTextField.m @@ -82,7 +82,7 @@ CGFloat const STPPaymentCardTextFieldDefaultPadding = 10; _viewModel = [STPPaymentCardTextFieldViewModel new]; _sizingField = [self buildTextField]; - UIImageView *brandImageView = [[UIImageView alloc] initWithImage:_viewModel.brandImage]; + UIImageView *brandImageView = [[UIImageView alloc] initWithImage:[self brandImageForFieldType:STPCardFieldTypeNumber]]; brandImageView.contentMode = UIViewContentModeCenter; brandImageView.backgroundColor = [UIColor clearColor]; if ([brandImageView respondsToSelector:@selector(setTintColor:)]) { @@ -589,8 +589,24 @@ typedef void (^STPNumberShrunkCompletionBlock)(BOOL completed); return NO; } +- (UIImage *)cvcImageForCardBrand:(STPCardBrand)cardBrand { + return self.viewModel.cvcImage; +} + +- (UIImage *)brandImageForCardBrand:(STPCardBrand)cardBrand { + return self.viewModel.brandImage; +} + +- (UIImage *)brandImageForFieldType:(STPCardFieldType)fieldType { + if (fieldType == STPCardFieldTypeCVC) { + return [self cvcImageForCardBrand:self.viewModel.brand]; + } + + return [self brandImageForCardBrand:self.viewModel.brand]; +} + - (void)updateImageForFieldType:(STPCardFieldType)fieldType { - UIImage *image = fieldType == STPCardFieldTypeCVC ? self.viewModel.cvcImage : self.viewModel.brandImage; + UIImage *image = [self brandImageForFieldType:fieldType]; if (image != self.brandImageView.image) { self.brandImageView.image = image;