Как выровнять текст в текстовом поле IOS? - PullRequest
1 голос
/ 23 февраля 2012

Я разрабатываю приложение для iphone.Одно из моих представлений содержит текстовое поле, которое я использовал для отображения текста.Я использовал раскадровку, чтобы сделать это.Чтобы лучше объяснить, это представление покажет пользователю историю футбольной команды.Например, «команда была основана в 1990 году» и т. Д., И дают полную историю командыТак что не будет никакого взаимодействия с пользователем.Читатель будет только читать текст и переходить к следующей странице.Является ли использование текстового поля для текста хорошей идеей?И есть ли способ оправдать выравнивание текста, чтобы все концы строк были выровнены?

Ответы [ 4 ]

8 голосов
/ 23 февраля 2012

Я думаю, что вы будете использовать WebView, потому что оправданное выравнивание текста у вас есть только по центру, слева и справа от UItextView.

Если вы хотите использовать UiWebView, установите

className.h

@interface className : UIViewController {
    IBOutlet UIWebView *webviewName;
}

@property (nonatomic, retain) UIWebView *webviewName;

className.m

[webviewName loadHTMLString:[NSString stringWithFormat:@"<div align='justify'>%@<div>",TEXT_set] baseURL:nil];
1 голос
/ 23 февраля 2012

UITextView - хороший путь, но он не имеет возможности оправдать содержащийся в нем текст.Другой подход заключается в использовании UIWebView для отображения простого HTML-документа.

Чтобы иметь хорошо выглядящий выровненный текст в HTML, установите для свойства text-align значение justify и, возможно, используйте JavaScript улучшить разрыв строки .

Надеюсь, это поможет:)

0 голосов
/ 23 февраля 2012

Я обнаружил, что универсальный подкласс контроллера представления для загрузки веб-представления очень пригоден для повторного использования. У меня два. Один предназначен для контроллера навигации, а другой - контроллер модального вида. Я использую их снова и снова с изменениями для таких вещей, как помощь, юридическая информация и о моей компании. Это будет очень хорошо работать для ваших целей.

Я использую KempoZer в качестве бесплатного редактора HTML для создания загружаемых в него файлов. Преимущество заключается в том, что HTML-редактор позволяет мне добавлять жирный, курсив, заголовки и шрифты разных размеров.

В раскадровке у меня есть несколько переходов к одному и тому же контроллеру представления и задаю два свойства в методе подготовки к переходу в контроллере представления, который вызывает контроллер представления html.

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"instructions"])  {
        [[segue destinationViewController] setNavigationTitle:@"Instructions"];
        [[segue destinationViewController] setHtmlFileName:@""];        
    } else if ([[segue identifier] isEqualToString:@"legal"])  {
        [[segue destinationViewController] setNavigationTitle:@"Legal Notices"];
        [[segue destinationViewController] setHtmlFileName:@"legal.html"];        
    } else if ([[segue identifier] isEqualToString:@"about"])  {
        [[segue destinationViewController] setNavigationTitle:@"About"];
        [[segue destinationViewController] setHtmlFileName:@"AboutSuperDuperCoolApps.html"];        
    } else if ([[segue identifier] isEqualToString:@"videoTutorials"])  {
        [[segue destinationViewController] setNavigationTitle:@"Video Tutorials"];
        [[segue destinationViewController] setHtmlFileName:@""];        
    }
}

Вот версия контроллера nab, не забудьте создать контроллер представления раскадровки и подключить веб-представление.

//  HTMLViewController.h

#import <UIKit/UIKit.h>

@interface HTMLViewController : UIViewController

@property (strong, nonatomic) IBOutlet UIWebView *webView;
@property (strong, nonatomic) NSString *htmlFileName;
@property (strong, nonatomic) NSString *navigationTitle;

@end

и

//  HTMLViewController.

#import "HTMLViewController.h"

@implementation HTMLViewController
@synthesize webView, htmlFileName, navigationTitle;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
    //
    [self.navigationItem setTitle:navigationTitle];
    // load selected html file
    NSString *bundle = [[NSBundle mainBundle] bundlePath];
    NSString *webPath = [bundle stringByAppendingPathComponent:htmlFileName];
    [super viewDidLoad];
    [webView loadRequest:[NSURLRequest requestWithURL:
                          [NSURL fileURLWithPath:webPath]]];
    //
    [super viewDidLoad];

}


- (void)viewDidUnload
{
    [self setWebView:nil];
    [self setHtmlFileName:nil];
    [self setNavigationTitle:nil];
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end
0 голосов
/ 23 февраля 2012

хорошо, с этим у вас нет проблем с использованием textView, просто убедитесь, что его взаимодействие с пользователем отключено, а если данные поступают динамически, чем вы должны использовать веб-представление, это сделает выравнивание правильным

...