Rove~ 2017-01-26 13:33 采纳率: 0%
浏览 1391

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

原本写好的一个自定义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条回答 默认 最新

  • dabocaiqq 2017-01-26 18:34
    关注
    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!