Ios 外观和各种碰撞

Ios 外观和各种碰撞,ios,objective-c,uiappearance,Ios,Objective C,Uiappearance,在定制我的应用程序时,我感到非常沮丧。 我已经创建并设计了几乎整个应用程序,包括导航栏、工具栏、选项卡栏等,但每次使用MFMailComposeViewController、MFMessageComposeViewController、Twitter或Facebook共享程序,甚至QuickLook视图控制器时,应用程序都会崩溃,并显示以下消息: *** Assertion failure in -[UICGColor encodeWithCoder:]. *** Terminating app

在定制我的应用程序时,我感到非常沮丧。 我已经创建并设计了几乎整个应用程序,包括导航栏、工具栏、选项卡栏等,但每次使用MFMailComposeViewController、MFMessageComposeViewController、Twitter或Facebook共享程序,甚至QuickLook视图控制器时,应用程序都会崩溃,并显示以下消息:

*** Assertion failure in -[UICGColor encodeWithCoder:].
*** Terminating app due to uncaught exception 'NSInternalInconsistencyExceptionì, reason: 'Only RGBA or White color spaces are supported in this situation.'
我读过很多书,这是因为iOS 6将作曲家作为遥控器进行管理,但我真的不知道如何解决这个问题

因此,我不想删除邮件撰写功能或邮件撰写功能

有人也遇到过这个错误吗

我已经编写了代码。问题是UIAppearance由于自定义UINavigationBars元素而导致应用程序崩溃。 代码

外表

- (void)customizeAppearance
{
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

    UINavigationBar Appearance
    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationBarBackground"] forBarMetrics:UIBarMetricsDefault];
    [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
    [[UINavigationBar appearance] setTitleTextAttributes:
     [NSDictionary dictionaryWithObjectsAndKeys:
      [UIColor whiteColor],
      UITextAttributeTextColor,
      [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.0],
      UITextAttributeTextShadowColor,
      [NSValue valueWithUIOffset:UIOffsetMake(0, -1)],
      UITextAttributeTextShadowOffset,
      [UIFont fontWithName:@"HelveticaNeue" size:0.0],
      UITextAttributeFont,
      nil]];

    //ToolBar Appearance
    [[UIToolbar appearance] setTintColor:[UIColor whiteColor]];


    //Switch Appearance
    [[UISwitch appearance] setOnTintColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"greenBackground"]]];

    //Search Bar Appearance
    [[UISearchBar appearance] setTintColor:[UIColor whiteColor]];

    //Tab Bar Appearance
    [[UITabBar appearance] setBackgroundImage:[UIImage imageNamed:@"tabBarBackground"]];
    [[UITabBar appearance] setTintColor:[UIColor whiteColor]];
    [[UITabBarItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], UITextAttributeTextColor, nil] forState:UIControlStateNormal];
    [[UITabBar appearance] setSelectionIndicatorImage:[UIImage imageNamed:@"transparent"]];

}

在.h文件中添加代理

在.m文件中添加以下内容

 -(void)ShareByEmail:(NSString *)strEmail {
        MFMailComposeViewController *mail = [[MFMailComposeViewController alloc] init];
        mail.mailComposeDelegate = self;
        if ([MFMailComposeViewController canSendMail]) {

            NSString *bodyData = @"Boy data place here";


                NSString *strRecipients = [NSString stringWithFormat:@"%@",strEmail];
                strRecipients = [strRecipients stringByReplacingOccurrencesOfString:@"mailto:" withString:@""];
                NSArray * arrayRecipients = [strRecipients componentsSeparatedByString:@""];

                [mail setToRecipients:arrayRecipients];

            [mail setSubject:@"Subject"];
            [mail setMessageBody:bodyData isHTML:NO];
            [self presentViewController:mail animated:YES completion:nil];
        }
        mail = nil;
        return NSLog(@"%@",strEmail);
    }

-(void)shareBySMS:(NSString *)strSMS {
   if([strSMS length] > 0) {
            MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];
            if(picker) {
                picker.messageComposeDelegate = self;

                    picker.recipients = @"Youre Recipients";
                    //picker.recipients = [NSArray arrayWithObject:tel];
                    picker.body = strSMS;

                [self presentViewController:picker animated:NO completion:nil];
                picker = nil;
            }
            NSLog(@"SMS fired");
        }
}


#pragma mark Mail Composer Delegate Methods

- (void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error {

    // Notifies users about errors associated with the interface
    switch (result) {
        case MFMailComposeResultCancelled:
            break;
        case MFMailComposeResultSaved:
            break;
        case MFMailComposeResultSent:
            break;
        case MFMailComposeResultFailed:
            break;
        default:
            break;
    }
    [self dismissViewControllerAnimated:YES completion:nil];
}

    - (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result {
        switch (result) {
            case MessageComposeResultCancelled:
                NSLog(@"Result: canceled");
                break;
            case MessageComposeResultSent:
                NSLog(@"Result: sent");
                break;
            case MessageComposeResultFailed:
                NSLog(@"Result: failed");
                break;
            default:
                NSLog(@"Result: not sent");
                break;
        }
        [self dismissViewControllerAnimated:YES completion:nil];
    }

你需要为twitter、facebook添加必要的框架。
对于电子邮件,请执行以下操作:

MessageUI.framework
添加到项目中

在您的.h文件中

#import <MessageUI/MessageUI.h>

@interface CustomController : UIViewController<MFMailComposeViewControllerDelegate>

在各种调试会话之后,我发现导致崩溃的代码行是

//Switch Appearance
[[UISwitch appearance] setOnTintColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"greenBackground"]]];
所以我删除了它,一切正常。 显然,我不能直接在AppDelegate中设置外观,但我必须在开关所在的类中设置外观


refreshControl外观也是一样:必须在tableView的类中设置它。

试试这个我已经试过了,我可以使用Google,但我没有找到任何修复方法。伙计,我已经有了所有的代码,必要的框架和所有的东西。问题是UIAppearance正在使其崩溃,因为我有一个自定义UINavigationBar,我几乎应用于应用程序的所有部分。编辑了原始问题。Thx Pheel,我在您的回答的帮助下找到了问题的解决方案。:)谢谢对我来说,这是
[[UITableView外观]setBackgroundColor:[uicolorWithPatternImage:someimage]]它似乎与[uicolorWithPatternImage:image]有明确的链接。对我来说,这是UIPageControl的定制。对我来说,使用colorWithPatternImage:当使用第三方键盘时,它会崩溃,否则一切正常。谢谢Pheel!你给了我一个非常奇怪的错误的解决方案!干杯
- (IBAction)actionEmail:(id)sender
{
NSLog(@"actionEmail Called");

MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
mc.mailComposeDelegate = self;
[self presentViewController:mc animated:YES completion:NULL];


}

- (void) mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
switch (result)
{
    case MFMailComposeResultCancelled:
        NSLog(@"Mail cancelled");
        break;
    case MFMailComposeResultSaved:
        NSLog(@"Mail saved");
        break;
    case MFMailComposeResultSent:
        NSLog(@"Mail sent");
        break;
    case MFMailComposeResultFailed:
        NSLog(@"Mail sent failure: %@", [error localizedDescription]);
        break;
    default:
        break;
}

// Close the Mail Interface
[self dismissViewControllerAnimated:YES completion:NULL];
}
//Switch Appearance
[[UISwitch appearance] setOnTintColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"greenBackground"]]];