zoukankan      html  css  js  c++  java
  • iOS 使用xib定义一个View,修改frame无效问题解决

    遇到过好多次使用自定义view,修改frame无效问题, 之前都是放弃xib,直接手写,发现手写简单的还行,复杂的UI就坑逼了。所以还是需要用到可视化编辑的xib。

    整理一下,自己备忘也供iOS开发的朋友参考:

    一般我们会直接这样写:

    XPGovRecUnitView *recUnitView = [[[NSBundle mainBundle] loadNibNamed:@"XPGovRecUnitView" owner:self options:nil] firstObject];
                recUnitView.tag = 10000+i;
                recUnitView.delegate = self;
                recUnitView.frame = CGRectMake(i*89, 0, 89, 139);
    

      

    这是我一个项目中的代码,但是这样出现了一个问题就是iPhone 6,6Plus以上的正常, iPhone5s屏幕尺寸的就显示不正常了。

    使用

    UIView *recUnitView = [[UIView alloc] initWithFrame:CGRectMake(i*89, 0, 89, 139)];

    调试后发现,使用alloc的方式iPhone5也是正常的。但是这样就要手写代码,往这个UIView 添加控件

    解决方案:

    1. 先把 XPGovRecUnitView.xib这个xib文件的属性设置一下

      在右侧属性栏中,
      找到Interface Builder Document , 把Use Auto layout的勾去掉
      找到Simulated Metrics , 把Size 设置成None, 没有None就是Freeform

    2.修改XPGovRecUnitView.m代码 

      

    #import "XPGovRecUnitView.h"
    
    @interface XPGovRecUnitView ()
    {
        CGRect tempframe;
    }
    
    
    @end
    
    @implementation XPGovRecUnitView
    
    -(id)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self) {
            NSArray *nibs=[[NSBundle mainBundle]loadNibNamed:@"XPGovRecUnitView" owner:nil options:nil];
            self=[nibs objectAtIndex:0];
            
            tempframe = frame;
            
            [self initSubViews];
        }
        return self;
    }
    -(void)drawRect:(CGRect)rect
    {
        self.frame = tempframe;
        
    }
    
    @end
    

      

    3.使用时代码

      

    XPGovRecUnitView *recUnitView = [[XPGovRecUnitView alloc] initWithFrame:CGRectMake(i*89, 0, 89, 139)];
                recUnitView.tag = 10000+i;
                recUnitView.delegate = self;
    

      

    这样就正常了。

  • 相关阅读:
    由wifi吞吐量问题联想到的分治思维
    总结----调试问题套路(经验)
    常用指令备忘录----持续更新
    【mark】OS是否使用svc方式分开系统空间和用户空间的优劣
    转载----五种开源协议(GPL,LGPL,BSD,MIT,Apache)
    rt-thread 动态装载实现、优化
    转:嵌入式: jffs2,yaffs2,logfs,ubifs文件系统性能分析
    gcc ld 链接器相关知识,调试指令(程序员的自我修养----链接、装载与库)
    HTML5与CSS3经典代码
    jquery mobile上传图片完整例子(包含ios图片横向问题处理和C#后台图片压缩)
  • 原文地址:https://www.cnblogs.com/xiaopin/p/7085286.html
Copyright © 2011-2022 走看看