qq_27314395
Rove~
2017-01-26 13:33

iOS通过网络请求获取数据计算添加在控制器View上的自定义的scrollView的UI 总是出错

  • 数据
  • ui
  • 网络
  • ios

原本写好的一个自定义scrollView,里面添加了两个控件,包括上面的广告scrollView以及下面的按钮btn,通过传入一个btnCount就能自己计算下面的btn个数来计算frame值和contenSize
在测试的时候UI显示没问题,如下:图片说明
结果通过网络,异步对这个btnCount赋值时,显示的UI就总是出现差错:图片说明
不管在哪里打印出现的frame都没有变化,只有当push一个控制器再pop返回后,这个UI界面才恢复正常,本人初入iOS,望有大神来帮忙解答一下,
BackgroundScrollViewFrame是对应自定义backgroundScrollView的模型,计算backgroundScrollView的frame

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.view.backgroundColor = [UIColor greenColor];

    [self addBackGroundScrollView];

}


- (void)addBackGroundScrollView
{
       //关联对象表
    BmobQuery *bquery = [BmobQuery queryWithClassName:@"subscribeWithNew"];

   //需要查询的列
   BmobObject *post = [BmobObject objectWithoutDatatWithClassName:@"_User" objectId:@"nhRY333E"];
   [bquery whereObjectKey:@"like" relatedTo:post];


    [bquery findObjectsInBackgroundWithBlock:^(NSArray *array, NSError *error) {



         BackgroundScrollViewFrame *scrollViewFrame = [[BackgroundScrollViewFrame alloc] init];
        int btnCount = (int)array.count;
        scrollViewFrame.btnCount = btnCount;
        self.scrollViewFrame = scrollViewFrame;

        BackgroundScrollView *backgroundScrollView = [[BackgroundScrollView alloc] init];
        [backgroundScrollView setBackgroundScrollViewFrame:scrollViewFrame];      

        [self.view addSubview:backgroundScrollView];

        self.backgroundScrollView = backgroundScrollView;     

        self.backgroundScrollView.backgroundDelegate = self;
   }];   
}


我自定义的ScrollView是通过往里面添加的另一个scrollView和下面添加的多个button来计算的整个ScrollView的frame,求大神帮忙解答一下,为什么用异步添加这个BackgroundScrollView就会出现这个问题,整个ScrolView的Y出现了问题,而且点击按钮push一个控制器之后pop返回,UI又整体恢复正常

 #import "BackgroundScrollViewFrame.h"
#import "NewsBtnViewFrame.h"

@implementation BackgroundScrollViewFrame


- (void)setBtnCount:(int)btnCount
{
    _btnCount = btnCount + 1;

    NewsBtnViewFrame *newsBtnFrame = [[NewsBtnViewFrame alloc] init];
    newsBtnFrame.btnCount = _btnCount;
    self.newsBtnFrame = newsBtnFrame;

    CGFloat x = 0;
    CGFloat y = 0;
    CGFloat w = ScreenW;
    CGFloat h = ScreenH ;

    self.artFrame = CGRectMake(0, 0, ScreenW, 120);

    self.frame = CGRectMake(x, y, w, h);

}

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

2条回答