我需要在视图控制器中为条款和条件屏幕切换三种不同的字体大小,以无限循环(13,15,17..13,15,17 ......等)。屏幕非常简单,全屏显示文本,导航栏中有一个按钮,按下时,触发事件和事件处理。
这三种字体由三个NSString常量表示。
-(IBAction)toggleFontSize:(id)sender
{
if (self.currentFontIdentifier == regularFontIdentifier)
{
self.currentFontIdentifier = largeFontIdentifier;
}
else if (self.currentFontIdentifier == largeFontIdentifier)
{
self.currentFontIdentifier = smallFontIdentifier;
}
else
{
self.currentFontIdentifier = regularFontIdentifier;
}
self.termsAndConditionsTextView.font = [[BrandingManager sharedManager] fontWithIdentifier:self.currentFontIdentifier];
}
此代码适用(现在:)),但它是一个很好的地中海IF游艇。我想知道是否有更成熟的方法。我已经看到利益相关者改变主意并添加第4个字体大小。我希望它更易于管理,所以基本上一旦他们添加了一个新的大小,我只会将它添加到某个数组中,那就是它。
有关更成熟算法的任何想法吗?
答案 0 :(得分:1)
声明当前所选索引的实例变量和三种字体(小型,常规和大型)的数组并尝试:
-(IBAction)toggleFontSize:(id)sender {
_currentSelectedIndex = (_currentSelectedIndex + 1) % 3;
self.currentFontIdentifier = _fontIdentifiers[_currentSelectedIndex];
self.termsAndConditionsTextView.font = [[BrandingManager sharedManager] fontWithIdentifier:self.currentFontIdentifier];
}
您可能不需要currentFontIdentifier
属性,因为可以使用_fontIdentifiers[_currentSelectedIndex]
答案 1 :(得分:0)
您可以使用NSArray类的方法'indexOfObject和'lastObject',如:
使用大小数组:
NSArray *fontList = @[@"12","14","18"];
然后你可以使用indexOfObject
迭代它NSUInteger ix = [fontList indexOfObject:self.currentFontIdentifier] + 1;
if ([[fontList lastObject] isEqual:self.currentFontIdentifier])
ix=0;
self.currentFontIdentifier = [fontList objectAtIndex:ix];
或
NSUInteger ix = [fontList indexOfObject:self.currentFontIdentifier] + 1;
if (ix >= [fontList count])
ix=0;
self.currentFontIdentifier = [fontList objectAtIndex:ix];