2015-04-29 8 views
0

Я работаю над приложением, которое использует сегодняшний виджет, где мне нужно показать некоторый вид таблицы с почти 50 строк. Но экран подходит только для 10 строк. Поэтому мне нужно увеличить высоту виджет в соответствии с моей высотой таблицы. Я провел много исследований по этому вопросу, в котором говорится, что я не могу сделать. Я видел приложение для акций yahoo, которое имеет функцию «показать все», чтобы отображать все акции на виджетах с высотой больше, чем высота экрана. Если что-то делается где-то, почему я не могу это сделать? Я попытался установить высоту высоты представления моего viewviewcontroller как в способах использования автозапуска, так и в настройке «preferredContentSize». Я действительно хотел знать, что я делаю что-то не так, или невозможно, чтобы высота виджета больше, чем экран height.Any предложение оценено. Вот мой код Todayviewcontroller.mДинамический динамик сегодняшнего дня - iOS

-(void)adjustWidgetHeight { 
NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:self.view 
                    attribute:NSLayoutAttributeHeight 
                    relatedBy:0 
                     toItem:nil 
                    attribute:NSLayoutAttributeNotAnAttribute 
                    multiplier:1 
                    constant:2140]; 
heightConstraint.priority = 999; 

[self.view addConstraint:heightConstraint]; 
[self.view needsUpdateConstraints]; 
[self.view setNeedsLayout]; 

}

ответ

1

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

приложение для акций - это предустановленное приложение, поэтому, возможно, это возможно.

после того, как я проверил демонстрационный код виджета (я делаю некоторые исследования, как создавать виджеты по кодам), я думаю, что это невозможно.

система добавит силы ограничение высоты, что именно eqauls панель виджетов (в Iphone 5 & 5S, это около 441), даже я вручную установить 3000 высоту, он по-прежнему ограничивается 441.

вы можете проверить демонстрационная GIF:

test

это мой код теста (я использую Кладка сделать autolayout)

// 
// TodayViewController.m 
// widget 
// 
// Created by Ralph Li on 4/29/15. 
// Copyright (c) 2015 LJC. All rights reserved. 
// 

#import "TodayViewController.h" 
#import <NotificationCenter/NotificationCenter.h> 
#import <Masonry/Masonry.h> 

@interface TodayViewController() <NCWidgetProviding> 

@property (strong, nonatomic) UIView *contentView; 
@property (nonatomic, strong) UIButton *btnTest; 

@end 

@implementation TodayViewController 

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

    self.contentView = [UIView new]; 
    self.contentView.backgroundColor = [UIColor whiteColor]; 
    [self.view addSubview:self.contentView]; 

    [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { 
     make.edges.equalTo(self.view); 
     make.height.mas_equalTo(200).priorityHigh(); 
    }]; 

    self.btnTest = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [self.btnTest setTitle:[[NSDate date] description] forState:UIControlStateNormal]; 
    self.btnTest.backgroundColor = [UIColor redColor]; 
    [self.btnTest addTarget:self action:@selector(actionTest) forControlEvents:UIControlEventTouchUpInside]; 

    [self.contentView addSubview:self.btnTest]; 

    [self.btnTest mas_makeConstraints:^(MASConstraintMaker *make) { 
     make.center.equalTo(self.contentView); 
     make.size.mas_equalTo(CGSizeMake(300, 40)); 
    }]; 
} 

- (void) actionTest 
{ 
    [self.contentView mas_updateConstraints:^(MASConstraintMaker *make) { 
     make.height.mas_equalTo(@(self.contentView.frame.size.height>250?200:3000)).priorityHigh(); 
    }]; 

} 

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

- (void)widgetPerformUpdateWithCompletionHandler:(void (^)(NCUpdateResult))completionHandler { 
    // Perform any setup necessary in order to update the view. 

    // If an error is encountered, use NCUpdateResultFailed 
    // If there's no update required, use NCUpdateResultNoData 
    // If there's an update, use NCUpdateResultNewData 

    completionHandler(NCUpdateResultNewData); 
} 

- (UIEdgeInsets)widgetMarginInsetsForProposedMarginInsets:(UIEdgeInsets)defaultMarginInsets 
{ 
    return UIEdgeInsetsZero; 
} 

@end 
+0

Спасибо adali .. Я тоже могу изменить высоту динамически, но не больше, чем размер экрана. Я очень ценю ваши усилия. – ayinala

+0

Я искал 'widgetPerformUpdateWithCompletionHandler', спасибо – Husam

Смежные вопросы