iOS 10.20 사용 & Swift 3.0 Swift 3.0에서 Stephen Poletto가 작성한 훌륭한 코드를 사용하고 싶습니다.SPUserResizableView [Objective C]를 Swift 3.0으로 변환 setFrame setContentView
https://github.com/spoletto/SPUserResizableView
거의 다하지만 지금 붙어있다. 내 코드가 충돌하여 setContentView 또는 setFrame을 실행하지 못하고 Stephan의 코드가이 코드를 호출하는 방식을 이해하지 못합니다. 코드 중 해당 메소드에 대한 참조가 없습니다. 아마도 프레임이나 뷰를 설정할 때 호출할까요? 신속한 동등한 무엇입니까? 나는 그 방법들을 기록했지만, 그것들은 실행되지 않았다. ...
- (void)setContentView:(UIView *)newContentView {
[contentView removeFromSuperview];
contentView = newContentView;
contentView.frame = CGRectInset(self.bounds, kSPUserResizableViewGlobalInset + kSPUserResizableViewInteractiveBorderSize/2, kSPUserResizableViewGlobalInset + kSPUserResizableViewInteractiveBorderSize/2);
[self addSubview:contentView];
// Ensure the border view is always on top by removing it and adding it to the end of the subview list.
[borderView removeFromSuperview];
[self addSubview:borderView];
}
- (void)setFrame:(CGRect)newFrame {
[super setFrame:newFrame];
contentView.frame = CGRectInset(self.bounds, kSPUserResizableViewGlobalInset + kSPUserResizableViewInteractiveBorderSize/2, kSPUserResizableViewGlobalInset + kSPUserResizableViewInteractiveBorderSize/2);
borderView.frame = CGRectInset(self.bounds, kSPUserResizableViewGlobalInset, kSPUserResizableViewGlobalInset);
[borderView setNeedsDisplay];
}
My Swift 3.0 코드는 다음과 같습니까? 좋아
func setContentView(newContentView: UIView) {
contentView.removeFromSuperview()
contentView = newContentView
contentView.frame = self.bounds.insetBy(dx: CGFloat(kUserResizableViewGlobalInset) + kUserResizableViewInteractiveBorderSize/2.0, dy: CGFloat(kUserResizableViewGlobalInset) + kUserResizableViewInteractiveBorderSize/2.0)
self.addSubview(contentView)
// Ensure the border view is always on top by removing it and adding it to the end of the subview list.
borderView.removeFromSuperview()
self.addSubview(borderView)
}
func setFrame(newFrame: CGRect) {
contentView.frame = self.bounds.insetBy(dx: CGFloat(kUserResizableViewGlobalInset) + kUserResizableViewInteractiveBorderSize/2.0, dy: CGFloat(kUserResizableViewGlobalInset) + kUserResizableViewInteractiveBorderSize/2.0)
borderView.frame = self.bounds.insetBy(dx: CGFloat(kUserResizableViewGlobalInset), dy: CGFloat(kUserResizableViewGlobalInset));
borderView.setNeedsDisplay()
}