gpt4 book ai didi

ios - 将字体大小和样式部分添加到 pickerView

转载 作者:行者123 更新时间:2023-11-29 03:46:31 30 4
gpt4 key购买 nike

我制作了一个字体选择器,可以显示轮子内的所有字体。

我现在需要添加 2 个额外的部分来更改字体大小和样式(粗体、斜体、下划线)。

样式和大小是 UIFont 类的成员吗?如果是这样,如何访问它们?

这是我正在使用的代码:

.h 文件:

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController
{
NSArray *fonts;


NSMutableArray *fontNames;
NSArray *fontSize;
NSArray *fontStyle;

}


@property (strong, nonatomic,retain) IBOutlet UIPickerView *fontPicker;
@property (strong, nonatomic) IBOutlet UILabel *fontLabel;

@end

更新的 .m 文件。这给了我一个选择尺寸的部分,但它也改变了字体:

#import "ViewController.h"

@interface ViewController ()
{

}

@end

@implementation ViewController

#define MINIMUM_ALLOWED_FONT_SIZE 13

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.



fontNames = [NSMutableArray array];

for(NSString *familyName in [UIFont familyNames]) {
for(NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
[fontNames addObject:fontName];
}
}

_fontPicker.hidden = YES;
}


- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

- (NSInteger)numberOfComponentsInPickerView:
(UIPickerView *)pickerView
{
return 2;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView
numberOfRowsInComponent:(NSInteger)component
{

if(component == 0)
{
return fontNames.count;
}
else if (component == 1){
return MINIMUM_ALLOWED_FONT_SIZE + 17;
}


return -1;

}



- (UIView *)pickerView:(UIPickerView *)pickerView
viewForRow:(NSInteger)row
forComponent:(NSInteger)component
reusingView:(UIView *)view {


UILabel *pickerLabel = (UILabel *)view;
if (component == 0) {

CGRect frame = CGRectMake(0.0, 0.0, 80, 32);
pickerLabel = [[UILabel alloc] initWithFrame:frame];
pickerLabel.backgroundColor = [UIColor clearColor];
pickerLabel.textAlignment = NSTextAlignmentLeft;
pickerLabel.text = [NSString stringWithFormat:@"%@",[fontNames objectAtIndex:row]];
pickerLabel.font = [UIFont fontWithName:[fontNames objectAtIndex:row] size:15];
return pickerLabel;

} else if (component == 1) {
sizeLabel = [[UILabel alloc]initWithFrame:CGRectMake(0,0,80,32)];
sizeLabel.backgroundColor = [UIColor clearColor];
sizeLabel.textAlignment = NSTextAlignmentLeft;
sizeLabel.text = [NSString stringWithFormat:@"%i", (row + MINIMUM_ALLOWED_FONT_SIZE)];
return sizeLabel;
}

return nil;




}
-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
inComponent:(NSInteger)component
{


_fontLabel.text = [fontNames objectAtIndex:row];
_fontLabel.font = [UIFont fontWithName:[fontNames objectAtIndex:row] size:MINIMUM_ALLOWED_FONT_SIZE];

if(component == 1)
{
_fontLabel.font = [UIFont fontWithName:[fontNames objectAtIndex:row] size:row+MINIMUM_ALLOWED_FONT_SIZE];
}




}

- (IBAction)operationPressed:(id)sender {

_fontPicker.hidden = NO;



}


@end

最佳答案

大小是独立的,不依赖于字体。

粗体和斜体取决于字体,并且应该已经包含在您对字体名称的处理中。

诸如下划线和删除线之类的内容是表示属性,因此不依赖于字体(显式绘制或通过属性字符串绘制)。


要添加字体大小:

numberOfComponentsInPickerView更改为return 2;

pickerView:viewForRow:forComponent:reusingView: 更改为

if (component == 0) {
// add the current code you have here
} else {
// create a new label here
pickerLabel.text = [NSString stringWithFormat:@"%i", (row + MINIMUM_ALLOWED_FONT_SIZE)];
}

添加#define MINIMUM_ALLOWED_FONT_SIZE 13

附注如果您已经有一个字符串(您确实有),请不要使用[NSString stringWithFormat:@"%@",,这是毫无意义且浪费的。


-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
inComponent:(NSInteger)component
{
_fontLabel.text = [fontNames objectAtIndex:[pickerView selectedRowInComponent:0]];
_fontLabel.font = [UIFont fontWithName:fontNames objectAtIndex:[pickerView selectedRowInComponent:0]]
size:MINIMUM_ALLOWED_FONT_SIZE + [pickerView selectedRowInComponent:1]];
}

关于ios - 将字体大小和样式部分添加到 pickerView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17693316/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com