LoginSignup
4
4

More than 5 years have passed since last update.

Today Extensinでの不具合でRejectされてしまった…

Last updated at Posted at 2014-12-22

Storyboard,AutoLayout使っていませんでした…

アプリ内でセットした画像を表示する機能でした。
ハードコードですが悪しからず…

-(void)awakeFromNib
{
    [super awakeFromNib];
}
-(id)init{
    NSLog(@"init");
    self = [super init];
    if (self) {
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(userDefoltChenge:) name:NSUserDefaultsDidChangeNotification  object:nil];
    }
    return self;
}
-(void)userDefoltChenge:(NSNotification *)notification
{
    [self uploadimage];
}

-(void)uploadimage
{
    NSUserDefaults *sharedDefaults = [[NSUserDefaults alloc]initWithSuiteName:@"group.com.ID"];

    NSData* imageData = [sharedDefaults objectForKey:@"image"];

    [imageview setImage:[[UIImage alloc] initWithData:imageData]];
    NSLog(@"");
}

- (void)viewDidLoad {
    NSLog(@"viewDidLoad");
    [super viewDidLoad];
    [self setPreferredContentSize:CGSizeMake(self.view.bounds.size.width,300)];
    imageview = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 300, 300)];
    [self.view addSubview:imageview];
    UIButton * button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    button.frame = CGRectMake(0, 0, 300, 300);
    [button addTarget:self action:@selector(didButtonTapEvent:) forControlEvents:UIControlEventTouchUpInside];
    [imageview addSubview:button];
    imageview.userInteractionEnabled = YES;
    [self uploadimage];
   }

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
}
-(void)didButtonTapEvent:(UIButton *)button
{
    [self.extensionContext openURL:[NSURL URLWithString:@"ID://"] completionHandler:nil];

}

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

- (void)widgetPerformUpdateWithCompletionHandler:(void (^)(NCUpdateResult))completionHandler {
    completionHandler(NCUpdateResultNewData);
}

-(UIEdgeInsets)widgetMarginInsetsForProposedMarginInsets:(UIEdgeInsets)defaultMarginInsets
{
    return UIEdgeInsetsMake(10,
                            (self.view.bounds.size.width-300)/2,
                            10,
                            (self.view.bounds.size.width-300)/2);
}

そのままでもiPhoneでは、問題ないが…

iPadで表示すると画像が約1/3しか表示されませんでした。
methodの呼ばれる順番とwidgetMarginInsetsForProposedMarginInsetsでの、安易な設定が原因でした。

methodの呼び出される順番

↓の順番で呼ばれる為、init後に呼ばれると勘違いしていた。

2014-12-22 11:49:13.678 AppExtention[3918:77730] init
2014-12-22 11:49:13.683 AppExtention[3918:77730] viewDidLoad
2014-12-22 11:49:13.704 AppExtention[3918:77730] widgetMarginInsetsForProposedMarginInsets
2014-12-22 11:49:13.731 AppExtention[3918:77730] wigetPerformUpdate
2014-12-22 11:49:13.791 AppExtention[3918:77730] viewWillAppear

画像を表示するだけであれば

↓へ変更すれば、全ての端末でセンタリングされた状態で表示された。

//省略
- (void)viewDidLoad {
    NSLog(@"viewDidLoad");
    [super viewDidLoad];
    imageView = [[UIImageView alloc]init];
    imageView.contentMode = UIViewContentModeScaleAspectFit;
    [self.view addSubview:imageView];
    button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    button.frame = imageView.frame;
    [button addTarget:self action:@selector(didButtonTapEvent:) forControlEvents:UIControlEventTouchUpInside];
    [imageView addSubview:button];
    imageView.userInteractionEnabled = YES;
    [self uploadimage];
}

//省略

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    NSLog(@"viewWillAppear");
    [self setPreferredContentSize:CGSizeMake(self.view.bounds.size.width,300)];
    imageView.frame = CGRectMake(0, 0, self.view.frame.size.width, 300);
    button.frame = imageView.frame;

}
//省略
-(UIEdgeInsets)widgetMarginInsetsForProposedMarginInsets:(UIEdgeInsets)defaultMarginInsets
{
    NSLog(@"widgetMarginInsetsForProposedMarginInsets");
    return UIEdgeInsetsMake(10,
                            0,
                            10,
                            0);
}

//省略

あとがき

iPadでの表示不具合は、他のアップデートの審査のタイミングで指摘されました。
初回の申請時は、通過していたのでチェックしていませんでした。

今回、LaunchScreen.xibでiPhone6,iPhone6Plusの画面対応をした為、iPadの挙動が変化した可能性があります。検証していませんが、新たに画面対応する場合、検証をすることをおすすめします。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4