[問題] nib建立的custom view與auto layout

看板MacDev作者 (活著計畫)時間10年前 (2015/03/04 02:02), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/2 (看更多)
我利用xib建立一個自訂的view物件 之後在storyboard上拖曳一個view進來,並指定custom class來建立自訂的view物件 執行之後物件確實建立了 但問題是尺寸不對 設定部份 因為xib裡面的view(container),size是設定為inferred 所以size inspector裏的x, y, width, height都是反白無法設定的 且顯示為(0, 0, 600, 600) 而我將自訂的view物件拉進storyboard以後 我設定了width & height的constraint(300, 200) 但執行以後,view的尺寸還是維持原先的600, 600 並沒有更新為我所設定的constraint 我在initWithCoder查看,發現self.bounds.size是正確的數值(300, 200) 但self.view.bounds.size卻是(600,600) 並沒有自己去設定為真正的尺寸 如果我多一行程式,將self.view的尺寸設定為self的尺寸 問題就解決了 但不知道有沒有其他的方式或是設定 我有試著要在xib裡面去設定作為container的view的constraint,但完全無法設定 另外還有一個問題,不知道是否與這有關 我看網路上很多教學說 要加一個設定 setTranslatesAutoresizingMaskIntoConstraints:NO 來避免與之前的autosizing產生衝突 但如果我加了這一行 所有的constraint就失效了,但也無法用直接指定的方式去更改frame 不知道這是怎麼一回事 附上自訂類別的.m檔 #import "MyHeader.h" @interface MyHeader () { CGSize _intrinsicContentSize; } @end @implementation MyHeader - (id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if (self == nil) { return nil; } [self setupView]; return self; } - (void)setupView { NSString *nibName = NSStringFromClass(self.class); UINib *nib = [UINib nibWithNibName:nibName bundle:nil]; [nib instantiateWithOwner:self options:nil]; // [self.view setTranslatesAutoresizingMaskIntoConstraints:NO]; //加了上面這行,排版就會有錯誤 _intrinsicContentSize = self.bounds.size; self.view.frame = CGRectMake(0, 0, _intrinsicContentSize.width, _intrinsicContentSize.height); [self addSubview:self.view]; } - (CGSize)intrinsicContentSize { return _intrinsicContentSize; } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 49.159.169.244 ※ 文章網址: https://www.ptt.cc/bbs/MacDev/M.1425405720.A.CFC.html

03/05 09:40, , 1F
前陣子也在研就這個,fb yume190,歡迎找我討論
03/05 09:40, 1F
文章代碼(AID): #1KzVSOpy (MacDev)
文章代碼(AID): #1KzVSOpy (MacDev)